那里。我想问一下关于 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)
对话框使用activityContext而不是applicationContext,并且仅限于isFinishing, 但这种事一直在发生。对话框使用不当吗?
class ChildActivity : BaseActivity() {
showDialog("title", "contents")
}
open class BaseActivity : AppCompatActivity() {
fun showDialog(title: String, contents:String) {
if (!isFinishing) {
val dialog = Dialog(this)
dialog.show()
}
}
}
class ChildActivity : BaseActivity() {
showDialog("title", "contents")
}
这是抛出异常的实际代码吗?如果是这样,您就错误地使用了它 - 在构造 ChildActivity 时会调用
showDialog
。考虑将其移动到另一个地方,例如 onResume():
class ChildActivity : BaseActivity() {
fun onResume() {
showDialog("title", "contents")
}
}