개발모음집

Unable to add window -- token null is not for an application 에러 본문

Android

Unable to add window -- token null is not for an application 에러

void 2017. 7. 14. 15:29
// 사진
AlertDialog.Builder ab = new AlertDialog.Builder(getActivity());
ab.setMessage(R.string.register_content_dialog_text);
ab.setNeutralButton("취소", new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog, int id) {
// 다이얼로그를 취소한다
dialog.cancel();
}
}).setNegativeButton("앨범선택", new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog, int id) {
doTakeAlbumAction();
}
}).setPositiveButton("사진촬영", new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog, int id) {
doTakePhotoAction();
}
});
ab.show();


프래그먼트에서 띄우던 다이얼로그를 그대로 액티비티에서 사용하려했다.


E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.blank.android.crafter, PID: 15491
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
at android.view.ViewRootImpl.setView(ViewRootImpl.java:853)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:337)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.app.Dialog.show(Dialog.java:350)
at android.app.AlertDialog$Builder.show(AlertDialog.java:1113)
at com.blank.android.crafter.SettingsActivity.onClick(SettingsActivity.java:156)
at android.view.View.performClick(View.java:5697)
at android.view.View$PerformClick.run(View.java:22526)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7225)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)


이러한 에러가 났고, 구글링 결과 다이얼로그 생성할 때 

getActivity메소드가 아닌 액티비티명을 적어줘야한다는 것을 보고 

고치니 에러해결

// 사진
AlertDialog.Builder ab = new AlertDialog.Builder(액티비티명.this);
ab.setMessage(R.string.register_content_dialog_text);
ab.setNeutralButton("취소", new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog, int id) {
// 다이얼로그를 취소한다
dialog.cancel();
}
}).setNegativeButton("앨범선택", new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog, int id) {
doTakeAlbumAction();
}
}).setPositiveButton("사진촬영", new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog, int id) {
doTakePhotoAction();
}
});
ab.show();


'Android' 카테고리의 다른 글

Google Places API Web Service API 키발급  (0) 2017.07.21
fcm 삽질  (0) 2017.07.14
구글 검색 api 에러  (0) 2017.06.30
구글지도 위도, 경도값 받아오지못하는 에러  (2) 2017.06.30
구글 Key Exists 에러  (0) 2017.06.30