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을 사용해서 다이얼로그를 띄우기
결과
728x90
'코틀린(Kotlin) > TIL' 카테고리의 다른 글
[코틀린(Kotlin)] Cannot format given Object as a Number (0) | 2024.01.11 |
---|---|
[코틀린(Kotlin)] 코틀린에서 버튼(Button) 색깔 바꾸기 (0) | 2024.01.10 |
[코틀린(Kotlin)] 알림 (2) | 2024.01.07 |
[코틀린(Kotlin)] 다이얼로그 (0) | 2024.01.07 |
[코틀린(Kotlin)] 프래그먼트 데이터 전달 (0) | 2024.01.07 |