Smart Box

[Android] Alert Dialog 에서 뒤로가기 키나 배경 터치 무력화 시키기 본문

Programming/Java&Kotlin

[Android] Alert Dialog 에서 뒤로가기 키나 배경 터치 무력화 시키기

프매씨 2017. 7. 3. 23:56


안드로이드 프로그래밍 도중 예외 상황을 발견했습니다.

Alert Dialog로 메세지를 표시 후, Yes 또는 No 버튼을 통해 값을 받아야 하는데, Dialog 바깥을 터치하거나 뒤로가기 키를 눌르면 대화 창이 무시되더군요.


그런 경우 다음과 같은 설정을 해주시면 뒤로가기를 누르거나, 대화 창 이외의 공간을 터치해도 무시합니다.


- setCancelable 설정하기

1
2
3
4
5
 final AlertDialog.Builder alert = new AlertDialog.Builder(this);
 
 alert.setTitle("하하하");
 alert.setMessage("뒤로가기 키를 눌른다고? 소용없지!");
 alert.setCancelable(false);
cs

setCancelable를 true로 하면 뒤로가기 키와 배경 터치를 통해 대화 창을 취소할 수 있고, false로 하면 해당 이벤트로 취소를 할 수 없습니다.


하지만, 해당 이벤트(뒤로가기, 배경터치)를 살리면서 뒤로가기와 배경터치 이벤트를 받을려면 다음과 같은 방법이 있습니다.


- setOnDismissListner를 사용하자 (API 17 이상)

1
2
3
4
5
6
alert.setOnDismissListener(new DialogInterface.OnDismissListener() {
            @Override
            public void onDismiss(DialogInterface dialog) {
                
            }
        });
cs

setOnDismissListner를 통해 Dialog가 Dissmiss될 경우 이벤트를 발생시킬 수 있습니다.

하지만 해당 리스너는 API 17 이상부터 지원함을 참고해주세요.




Comments