我知道之前可能会讨论这个问题。但如果我使用getApplicationContext()
来显示Dialog
,我仍然感到困惑。
我有一个使用getApplicationContext()
创建AlertDialog.Builder
的应用程序,应用程序在显示对话框时崩溃。但是,如果我使用SomeActivity.this上下文它工作正常。
注意:这个应用程序现在已经在Play商店中使用了一段时间,之前正在运行,但不确定哪个Android版本会崩溃。
崩溃堆栈跟踪
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
at android.view.ViewRootImpl.setView(ViewRootImpl.java:540)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.app.Dialog.show(Dialog.java:286)
at android.app.AlertDialog$Builder.show(AlertDialog.java:951)
答案 0 :(得分:13)
但是如果我使用getApplicationContext()来显示对话框,我仍然感到困惑。
你爆炸了。
但是,如果我使用SomeActivity.this上下文,它工作正常。
正确。 Dialog
归Activity
所有。 You cannot use an Application
, Service
, or other Context
to show a Dialog
。但请注意,您可以使用任何Context
来启动以对话为主题的活动。
但不确定崩溃的Android版本
Android 1.0,据我所知。