반응형
안드로이드 33부터 onBackPressed() 가 Deprecated 되었다.
이제 다른 방법을 사용해야 한다. onBackPressedCallback이다.
이걸 이용해서 '뒤로가기 두 번 누를 시 앱 종료' 기능을 구현할 것이다.
private lateinit var callback: OnBackPressedCallback
var mBackWait:Long = 0
일단 전역변수로 콜백이랑 wait 시간을 초기화하고
이렇게 onAttach 함수, 그리고 onDetach 함수에 대해서만 구현해주면 된다.
override fun onAttach(context: Context) {
super.onAttach(context)
// 뒤로가기 기능 구현
callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// 뒤로가기 발생
print("occur back pressed event!!")
if(System.currentTimeMillis() - mBackWait >=2000) {
mBackWait = System.currentTimeMillis()
Snackbar.make(binding.root,"뒤로가기 버튼을 한번 더 누르면 종료됩니다.",Snackbar.LENGTH_LONG).show()
} else
requireActivity().finish()
}
}
requireActivity().onBackPressedDispatcher.addCallback(this, callback)
}
override fun onDetach() {
super.onDetach()
callback.remove()
}
반응형
'[클라이언트] > [Android Kotlin]' 카테고리의 다른 글
인스타그램의 수신 알림함을 구현하고자 (0) | 2023.04.23 |
---|---|
Kotlin 코루틴 / Python 코루틴 / Dart 코루틴 (0) | 2023.04.12 |
multiDex 오류 (0) | 2023.04.04 |
[Kotlin / 코틀린] Setter (0) | 2023.03.29 |
Navigation - Jetpack 활용 ( Feat. ViewModel ) (1) | 2023.01.15 |