본문 바로가기

개발 노트/Kotlin

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

이전에는 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