개발관련

안드로이드 AlertDialog 바깥영역 클릭해서 취소 하기 setOnCancelListener

개발자 Dane 2021. 6. 10. 10:15
반응형

setOnDismissListener vs setOnCancelListener

setOnDismissListener의 경우 취소 뿐만 아니라 확인 버튼을 클릭했을때에도 이벤트가 발생한다. 즉 AlertDialog가 닫히는 모든 상황에서 발생하는 이벤트, 그러므로 바깥영역을 클릭해서 취소하는 경우에만 이벤트를 발생 시키고 싶다면 setOnCancelListener를 사용해야 된다.

setOnCancelListener는 바깥영역을 선택해서 취소했을때와 안드로이드 백버튼을 클릭했을시 모두 정상 동작 한다.

적용 예시

  • 코틀린으로 적용하기
val dialogBuilder = AlertDialog.Builder()
.setOnCancelListener(object : DialogInterface.OnCancelListener {
   override fun onCancel(arg0: DialogInterface) {
      //여기서 취소시 이벤트 처리
   }
})

참고

https://stackoverflow.com/questions/18267916/setoncancellistener-and-setondismisslistener-is-not-called-for-alertdialog-for-b/32582794#32582794

 

setOnCancelListener and setOnDismissListener is not called for AlertDialog for back button pressed or touch outside

When Touch outside the dialog region Press on back button I'm expecting onDismiss (Or onCancel) will be called. However, both of them are not called. May I know is there anything I'm missing? From

stackoverflow.com

https://developer.android.com/reference/android/app/Dialog#setOnCancelListener(android.content.DialogInterface.OnCancelListener)

 

Dialog  |  Android 개발자  |  Android Developers

 

developer.android.com

 

반응형