티스토리 뷰

Dialog를 dismiss()하는 경우 java.lang.IllegalArgumentException 에러가 발생 되는 경우가 있습니다.

해당에러는 Dialog를 dismiss()하는 과정에서 해당 dialog를 가지고 있는 Activity가 이미 종료되어
버린 상황에서 발생 되게 됩니다. (activity finish();)

if(dialog != null && dialog.isShowing()){
dialog.dismiss();
}

일부 게시글에서는 Dialog를 dismiss() 하기 전에 위 코드로 체크 후 종료하면 해결 된다고 하지만
해당 코드를 적용 해도 java.lang.IllegalArgumentException가 발생 하기도 합니다.

이 에러를 해결하기 위해서는 Dialog를 dismiss()를 할때 원칙적으로 Activity가 종료 되지 않은 상태 여야 하므로
Activity가 종료 될때 Dialog가 show()되어 있다면 dismiss()처리하여 Activity가 종료된 후에
Dialog가 dismiss() 되지 않도록 해 주어야 합니다.

Activity에서 onDestroy()를 Override하여 아래 코드를 넣어 주면 됩니다.


1
2
3
4
5
6
7
8
@Override
protected void onDestroy() {
   // TODO Auto-generated method stub
   super.onDestroy();
   if(dialog != null && dialog.isShowing()){
      dialog.dismiss();
   }
}
cs
댓글