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

Lib*_*bin 3 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) 
Run Code Online (Sandbox Code Playgroud)

Com*_*are 13

但是我仍然感到困惑,如果我使用getApplicationContext()来显示一个Dialog会发生什么.

你爆炸了

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

正确.A Dialog由一个人拥有Activity.你不能使用Application,Service或其他Context以显示Dialog.但请注意,您可以使用any Context来启动以对话为主题的活动.

但不确定从哪个Android版本崩溃

据我所知,Android 1.0.