말 그대로다. 아래와 같은 에러가 발생해서 삽질한 결과를 기록한다.
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 접근할 때 접근 권한이 없어서 일지도 모르겠다.
시간 더 쓰면 정확하게 알아낼 수 있을지도 모르지만, 그럴 시간도 없고 벌써 네시간이나 쓴 터라, 일단 이정도로 끝.
'프로그램 > 안드로이드' 카테고리의 다른 글
Android PhoneCall 과 sms 는 동시에 못 쓰나? (0) | 2017.03.23 |
---|---|
AsyncTask 는 중복해서 못 쓰나? (0) | 2017.03.20 |
안드로이드 에러 : Service Intent must be explicit (0) | 2017.02.10 |
안드로이드 스튜디오에서 외부 라이브러리가 추가되지 않을때 (0) | 2016.11.23 |
안드로이드 스튜디오에서 VT-x 사용 실패 혹은 HAX, HAXM 사용 실패 (0) | 2016.11.22 |