코틀린(Kotlin)/TIL

[코틀린(Kotlin)] 뒤로가기(back) 버튼 클릭 시 다이얼로그 띄우기 onBackPressedCallback

초보왕보초 2024. 1. 8. 21:13
728x90

개인과제 진행 중, 

별도의 버튼을 누르지 않고 기기의 뒤로가기(back) 버튼 클릭 시 종료하겠습니까?라는 다이얼로그를 띄운 후

처리하도록 하는 기능이 있었다

 

 

onBackPressed()를 사용하면 된다고 하길래 열심히 다이얼로그를 만들었다

override fun onBackPressed() {
    // 다이얼로그 생성
    val builder = AlertDialog.Builder(this@MainActivity)
    // 제목
    builder.setTitle("종료")
    // 콘텐츠 영역
    builder.setMessage("정말 종료하시겠습니까?")
    // 제목 옆의 아이콘
    builder.setIcon(R.drawable.chat)

    val listener = object : DialogInterface.OnClickListener {
        override fun onClick(dialog: DialogInterface?, which: Int) {
            when (which) {
                DialogInterface.BUTTON_POSITIVE ->
                    finish()
                DialogInterface.BUTTON_NEGATIVE ->
                    dialog?.dismiss()
                }
            }
        }
        builder.setPositiveButton("확인", listener)
        builder.setNegativeButton("취소", null)

        builder.show()
}

 

근데 이렇게 하면 override에 빨간 줄 뜨고 안 되길래 찾아봤더니

 API 레벨 33부터 onBackPressed()는 더 이상 사용되지 않고 OnBackInvokedCallback으로 변경되었다고 한다

 

 

 

OnBackInvokedCallback을 사용해서 다이얼로그를 띄우기

MainActivity.kt 16~43

 

 

 

결과

728x90