개요
- 하단의 뒤로가기 버튼은 Activity에 있는 것이므로 Activity의 `onBackPressedDispatcher`에 callback을 추가해줘야 한다.
- `onBackPressedDispatcher.onBackPressed()`를 호출했을 때 addCallback된 callBack 메서드가 없으면 default callback이 실행된다.
- 추가 된 것이 있으면 그 것을 실행하는데 그 안에서 `onBackPressedDispatcher.onBackPressed()`을 호출하면 무한루프에 빠지게 된다.
- `OnBackPressedCallback(true)`
- isEnabled = true 라는 의미
- true인 callback 메서드만 실행이 가능하다.
- false로 바꿔주면 다시 호출되지 않는다.
private val back_pressed_call_back = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// this.handleOnBackPressed()
// val contactListFragment = requireActivity().supportFragmentManager.fragments[0]
backCount++
Log.d("ContactDetailFragment", "click back button")
if(backCount == 7) {
isEnabled = false
}
requireActivity().onBackPressedDispatcher.onBackPressed()
// if(isEnabled) {
// isEnabled = false
// requireActivity().onBackPressedDispatcher.onBackPressed()
// }
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
// ...
requireActivity().onBackPressedDispatcher.addCallback(requireActivity(), back_pressed_call_back)
}
}
'TLI > Android' 카테고리의 다른 글
border line 만들기 (0) | 2024.08.28 |
---|---|
ConstraintLayout의 weight 비율 조정 (0) | 2024.08.26 |
ListAdapter의 holder 재사용 (0) | 2024.08.24 |
Retrofit (0) | 2024.08.09 |
Shared Preference / Room (0) | 2024.08.06 |