본문 바로가기
Android/Android 핵심기술

[Android/Kotlin] 뒤로가기 버튼 클릭이벤트 구현 - OnBackPressedCallback() 사용

by juwon2 2024. 4. 12.

 

 

이전에는 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://velog.io/@soyoung-dev/AndroidKotlin-onBackPressed-deprecated-OnBackPressedCallback-%EB%B3%80%EA%B2%B
[공식문서]
https://developer.android.com/guide/navigation/navigation-custom-back?hl=ko
[다이얼로그 참고]
https://yeons4every.tistory.com/164
https://stickode.tistory.com/104