Crashlytics | android.view.WindowManager$BadTokenException

问题描述 投票:0回答:1

那里。我想问一下关于 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()
      }
   }
}
android kotlin exception crashlytics
1个回答
0
投票
class ChildActivity : BaseActivity() {
  showDialog("title", "contents")
} 

这是抛出异常的实际代码吗?如果是这样,您就错误地使用了它 - 在构造 ChildActivity 时会调用

showDialog
。考虑将其移动到另一个地方,例如 onResume():

class ChildActivity : BaseActivity() {
  fun onResume() {
    showDialog("title", "contents")
  }
} 
© www.soinside.com 2019 - 2024. All rights reserved.