使用getApplicationContext()显示对话框 - BadTokenException:无法添加窗口

时间:2014-04-22 13:38:16

标签: android android-dialog

我知道之前可能会讨论这个问题。但如果我使用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) 

1 个答案:

答案 0 :(得分:13)

  

但是如果我使用getApplicationContext()来显示对话框,我仍然感到困惑。

你爆炸了。

  

但是,如果我使用SomeActivity.this上下文,它工作正常。

正确。 DialogActivity所有。 You cannot use an Application, Service, or other Context to show a Dialog。但请注意,您可以使用任何Context来启动以对话为主题的活动。

  

但不确定崩溃的Android版本

Android 1.0,据我所知。