프로그램/안드로이드

AlertDialog 에서 token null is not for an application 에러.

(주)CKBcorp., 2017. 2. 14. 06:00
반응형

 

말 그대로다. 아래와 같은 에러가 발생해서 삽질한 결과를 기록한다.

java.lang.RuntimeException: Unable to start activity ComponentInfo android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

AlertDialog 를 사용하려고 했는데, 잘 되던 코드가 뻑나서 삽질을 해 보니

 

        AlertDialog.Builder builder = new AlertDialog.Builder( getApplicationContext() );        // 오류발생
        AlertDialog.Builder builder = new AlertDialog.Builder( this );        // 정상작동

 

이러더라. 황당했다.

 

삽질한 것도 황당하지만 해결책도 전혀 생각나지 않아서 멍하니 있다가, 결국 인터넷 이것저것 뒤져보고 결론내렸다.

일단 getContext(), getApplicationContext(), getBaseContext(), this 의 차이는 여기서 확인하자.

이런저런 생각이 들긴 하는데 정확하게 말을 못하겠다. 왜냐면 내가 잘 모르거덩.

문제가 될 법한 건,
1. ApplicationContext() 가 context() 가져오는 거랑 현재의 activity() 를 context 로 쓰는 거랑 다를 가능성이 있단 거고,
2. 어쩌면 Activity() 에서 UI 접근할 때 접근 권한이 없어서 일지도 모르겠다.

시간 더 쓰면 정확하게 알아낼 수 있을지도 모르지만, 그럴 시간도 없고 벌써 네시간이나 쓴 터라, 일단 이정도로 끝.

 

반응형