이전에는 onBackPressed() 메소드를 사용하여 뒤로 가기 버튼이 눌렸을 때의 동작을 정의했지만,
최신 버전(targetSdk 33 : 안드로이드 13 이후)의 안드로이드에서는 onBackPressed()가 deprecated 되었다고 한다
대신에 OnBackPressedCallback 사용하여 뒤로 가기 버튼 동작을 정의할 수 있다.
OnBackPressedCallback은 OnBackPressedDispatcher를 통해 등록되고, 뒤로 가기 버튼을 누를 때마다 실행된다.
addCallback 메소드는 OnBackPressedDispatcher 에 새로운 OnBackPressedCallback 을 등록하고,
이렇게 등록된 콜백은 handleOnBackPressed 메소드에서 정의된 작업을 수행한다.
true는 이 콜백이 활성화되어 있어야 하는지를 나타내는 매개변수이다.
true로 설정하면 활성화, 만약 false로 설정하면 나중에 isEnabled 속성을 사용하여 콜백을 활성화시킬 수 있다
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
...
// 뒤로가기를 onBackPressedDispatcher를 통해 등록
onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
// 뒤로가기 버튼 눌렀을때 실행되는 콜백메소드
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// 뒤로가기 실행시 실행할 동작코드 구현하기! (앱종료, 다이얼로그 띄우기 등등)
}
}
# 참고자료
https://stickode.tistory.com/625
https://wise-99.tistory.com/28
[공식문서]
https://developer.android.com/guide/navigation/navigation-custom-back?hl=ko
[다이얼로그 참고]
https://yeons4every.tistory.com/164
https://stickode.tistory.com/104
'개발 노트 > Kotlin' 카테고리의 다른 글
[Android/Kotlin] Multi View Type 리사이클러뷰 구현하기 (0) | 2024.04.14 |
---|---|
[Android/Kotlin] Text에 밑줄 표시하기 (0) | 2024.04.14 |
[Android/Kotlin] 천단위로 콤마 표시하기 (DecimalFormat) (0) | 2024.04.12 |
[Android/Kotlin] ImageView scaleType 속성 (0) | 2024.04.12 |
[Android / Kotlin] Intent로 Class 값 넘기기 (Serializable, Parcelable, Parcelize) (0) | 2024.04.12 |