2014-04-22 2 views
3

이것이 이전에 여기에서 논의되었을 수도 있습니다. 그러나 getApplicationContext()을 사용하여 Dialog을 표시하면 어떻게되는지 혼란 스럽습니다.getApplicationContext()를 사용하여 대화 상자를 표시합니다. - BadTokenException : 창을 추가 할 수 없습니다.

AlertDialog.Builder을 만들기 위해 getApplicationContext()을 사용하는 응용 프로그램이 있으며 대화 상자에이 표시되면 응용 프로그램이 충돌합니다. 하지만 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 컨텍스트를 사용하면 정상적으로 작동합니다.

수정. DialogActivity에 의해 소유됩니다. You cannot use an Application, Service, or other Context to show a Dialog. 대화 상자를 주제로 한 활동을 시작하려면 Context을 사용할 수 있습니다.

하지만 확실하지 어떤 안드로이드 버전에서이 내가 아는 한,

안드로이드 1.0 충돌합니다.

관련 문제