2014-04-22 59 views
3

我知道这可能在此之前讨论过。但是,如果我使用getApplicationContext()来显示Dialog,我仍然感到困惑。使用getApplicationContext()显示对话框 - BadTokenException:无法添加窗口

我有一个应用程序,它使用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) 

回答

13

但我仍然感到困惑,如果我使用getApplicationContext()来显示一个对话框,会发生什么。

你炸毁了。

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

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

,但不知道从哪个Android版本这个崩溃

的Android 1.0,因为据我所知。

相关问题