Activity
액티비티 내에서는 그냥 onbackpressed를 오버라이딩 해버리면된다
override fun onBackPressed() {
super.onBackPressed()
//하고싶은거 하면됨
}
fragment
백버튼을 커스텀해서 사용하고싶을때 onBackPressed를 오버라이딩 해서 사용한다.
근데 프래그먼트에는 이런 콜백메서드가 없다(액티비티에만 있다)
그래서 backpress이벤트에 대처하기위해
Androidx 패키지의 OnBackPressedDispatcher() 를 사용한다
사용법을 보자면
class SetPurposeFragment : BaseFragment<FragmentSetPurposeBinding>(R.layout.fragment_set_purpose) {
private lateinit var callback: OnBackPressedCallback
override fun onAttach(context: Context) {
super.onAttach(context)
callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
//여기에 백버튼 눌렀을때 적용될것 작성
}
}
requireActivity().onBackPressedDispatcher.addCallback(this, callback)
}
override fun onDetach() {
super.onDetach()
callback.remove()
}
}
이런식으로 작성해서 사용하면된다
근데 난 원래의 백버튼의 기능도 사용하고싶은경우가 있다고 생각하는데
super.onBackPressed이런건 아예없고
requireActivity().onBackPressed하면 스택 오버플로우가 나서 기존기능을 다시 활용하는 방법은 못찾았다
문다빈과 이야기한 결과 그냥 백으로 넘기는거 다 코드로 구현해서 넣어주자
그리고 한가지 주의점은 이거는 액티비티에 onBackPressed에 편입된다는 개념으로 생각하면되서
만약에 activity에서 onBackPressed 함수를 오버라이딩 하더라고
super.onBackPressed() 무조건 호출해야 기능을한다.
'안드로이드' 카테고리의 다른 글
Diffutil 에 대한 정리 (0) | 2022.02.04 |
---|---|
리사이클러 뷰에 대한 잡설 (0) | 2022.02.02 |
바인딩 어댑터 매개변수 두개 이상일시 예시 (0) | 2022.01.26 |
base fragment,activity 예시 (0) | 2022.01.26 |
깃관련 초보의 뻘짓 모음집 (0) | 2022.01.14 |