반응형

안드로이드 코드를 작성하다보면

android.view.WindowManager$BadTokenException

위 같은 BadTokenException 유형의 에러가 확인될 때가 있다.

 

해당 문제에 대하여 원인파악 및 조치방안을 확인해보자

 

 

일단 위치를 확인하면 WindowManager 아래에 있는 함수다.

 

그럼 WindowManager 는 어떤건가?

[공식문서]

 

WindowManager  |  Android 개발자  |  Android Developers

WindowManager Jetpack WindowManager 라이브러리를 사용하면 애플리케이션 개발자가 새로운 기기 폼 팩터와 멀티 윈도우 환경을 지원할 수 있습니다. 라이브러리는 API 버전 14 이상에서 공통 API 노출 영역

developer.android.com

 

간단하게는 화면 표출에 관련된 함수다.. 그럼 왜 BadTokenException 이 발생하는걸까??

 

화면에 출력을 해줄려고 했는데 !! 

해당 Activity 가 동작하지 않는 경우에 발생한다!!!

반응형

 

그럼 심플하게 생각하면 

 

해당 Activity 가 동작중인지 체크만 추가해주면? ㅎㅎ 해결된다.

 

어떻게??

 

아래처럼 ㅎㅎ 

Activity.this.isFinishing() 조건식을 확인해보면 가능!! 

try {
    // Activity 동작 확인 조건식 추가
    if(!Activity_Connect.this.isFinishing()) {
        TextView tv = new TextView((Activity) CurrentOBJ);
        tv.setText("Dialog 타이틀");
        tv.setTextColor(0xFFFF8000);
        tv.setPadding(70, 50, 20, 30);
        tv.setTextSize(20F);
        AlertDialog.Builder builder = new AlertDialog.Builder((Activity) CurrentOBJ);
        builder.setCustomTitle(tv)
                .setMessage("본문 내용")
                .setPositiveButton("확인",
                        (dialog, which) -> {
                            //확인 클릭 시 동작 처리
                        })
                .setNegativeButton("취소",
                        (dialog, which) -> {
                            //취소 클릭 시 동작 처리
                        })
                .setCancelable(false)
                .show();
    }
}catch (WindowManager.BadTokenException e){
    e.printStackTrace();
}
SMALL

조건식으로 확인 후 동작하게되면 에러는 사라지게 됨 ㅎㅎ 

 

간단한 예외처리 완료 ㅎㅎ 

반응형

+ Recent posts