java.lang.IllegalArgumentException: View not attached to window manager

 

View not attached to window manager 는 안드로이드에서 다이얼로그를 다루다 보면 가끔씩 발생하는 녀석인데요...

 

주로 다이얼로그를 생성한 Activity가 소멸되고 난 이후에 해당 다이얼로그를 dismiss()할때 발생합니다.

 

저도 이곳 저곳을 찾아보니 대부분 다음과 같은 방법을 알려주더군요.

 

1. dialog != null 일때 dialog.dismiss()를 사용한다.

 

2. dialog.cancel() 을 사용한다.

 

 

하지만 저는 위에서 말한 2가지 모두 정상동작 하지 않고 에러가 발생하더라구요.

사실 답은 쉬운곳에 있었습니다.

 

바로 왜 java.lang.IllegalArgumentException: View not attached to window manager 이러한 에러가 발생했는지 미리 말씀드렸죠?

 

"다이얼로그를 생성한 Activity가 소멸되고 난이후 해당 다이얼로그를 dismiss()할때"

 

바로 해당 Activity 가 onDestroy()가 호출되어 소멸될때 닫아 버리면 되는 것이 었습니다.

 

그리고 기존에 닫으시던 곳은 아래와 같이 예외처리 하시면 되구요.

 

protected void onDestroy(){

  if(dialog != null){

    if(dialog.isShowing()){

      dialog.dismiss();

    }

  }  

}

...

...

....

 

 

if(dialog != null){

  if(dialog.isShowing()){

    dialog.dismiss();

  }

}

 

위와 같이 수정하시면 아마 에러가 발생하지 않으실 겁니다.

 

그럼 다들 즐프!!!  하세요.....