there. I want to ask about BadTokenException.
android.view.WindowManager$BadTokenException - Unable to add window -- token null is not valid; is your activity running?
android.view.ViewRootImpl.setView (ViewRootImpl.java:1743)
android.view.WindowManagerGlobal.addView (WindowManagerGlobal.java:524)
android.view.WindowManagerImpl.addView (WindowManagerImpl.java:150)
android.widget.PopupWindow.invokePopup (PopupWindow.java:1689)
android.widget.PopupWindow.showAtLocation (PopupWindow.java:1409)
android.widget.PopupWindow.showAtLocation (PopupWindow.java:1375)
com.android.internal.widget.floatingtoolbar.LocalFloatingToolbarPopup.show (LocalFloatingToolbarPopup.java:505)
com.android.internal.widget.floatingtoolbar.LocalFloatingToolbarPopup.show (LocalFloatingToolbarPopup.java:470)
com.android.internal.widget.floatingtoolbar.FloatingToolbar.doShow (FloatingToolbar.java:280)
com.android.internal.widget.floatingtoolbar.FloatingToolbar.show (FloatingToolbar.java:201)
com.android.internal.view.FloatingActionMode$FloatingToolbarVisibilityHelper.updateToolbarVisibility (FloatingActionMode.java:404)
com.android.internal.view.FloatingActionMode.repositionToolbar (FloatingActionMode.java:235)
com.android.internal.view.FloatingActionMode.updateViewLocationInWindow (FloatingActionMode.java:178)
com.android.internal.view.FloatingActionMode.invalidateContentRect (FloatingActionMode.java:162)
com.android.internal.view.FloatingActionMode.invalidate (FloatingActionMode.java:154)
com.android.internal.policy.DecorView.setHandledFloatingActionMode (DecorView.java:2707)
com.android.internal.policy.DecorView.setHandledActionMode (DecorView.java:2532)
com.android.internal.policy.DecorView.startActionMode (DecorView.java:1280)
com.android.internal.policy.DecorView.startActionModeForChild (DecorView.java:1234)
android.view.ViewGroup.startActionModeForChild (ViewGroup.java:1045)
The dialog uses activityContext rather than applicationContext and is restricted to isFinishing, but it keeps happening. Is dialog being used incorrectly?
class ChildActivity : BaseActivity() {
showDialog("title", "contents")
}
open class BaseActivity : AppCompatActivity() {
fun showDialog(title: String, contents:String) {
if (!isFinishing) {
val dialog = Dialog(this)
dialog.show()
}
}
}
Is this the actual code that throws the exception? If so, you're using it incorrectly -
showDialogis being called when ChildActivity gets constructed. Consider moving it to another place, like onResume():