반응형
안드로이드 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]' 카테고리의 다른 글
AWS Innovate 모던 앱 에디션 컨퍼런스 신청완료!! (0) | 2023.10.19 |
---|---|
Paging3 + Room 이틀동안 삽질 후 성공 정리 (0) | 2023.06.24 |
Navigation - Jetpack 활용 ( Feat. ViewModel ) (1) | 2023.01.15 |
[공부] 자바와 코틀린의 익명객체 (0) | 2023.01.13 |
안드로이드 Process와 Task [개념편] (1) | 2023.01.12 |