[Android] Fragment에서 BackPress 처리하기

LeeEunJae·2022년 11월 13일
0

Fragment 에서 뒤로가기 키를 눌렀을 때 어떤 작업을 처리하고 싶을 땐 어떻게 해야할까?
Activity의 OnBackPressed() 와 같은 콜백 메소드를 Fragment 에서는 구현할 수 없을까?

AndroidX 패키지에서 제공하는 OnBackPressedDispatcher() 를 사용하면 가능하다.

사용시 주의해야할 점은 생명주기를 잘 관리하면서 사용해야한다!

private lateinit var callback: OnBackPressedCallback

위와 같이 콜백을 전역벽수로 선언

override fun onAttach(context: Context) {
        super.onAttach(context)
        callback = object : OnBackPressedCallback(true) {
            override fun handleOnBackPressed() {
                (activity as MainActivity).mainFragmentReplace((activity as MainActivity).previousFragment)
            }
        }
        requireActivity().onBackPressedDispatcher.addCallback(this, callback)
    }


    override fun onDetach() {
        (activity as MainActivity).bottomNavigationEndMotion()
        (activity as MainActivity).topTabEndMotion()
        callback.remove()
        super.onDetach()
    }

onAttach() 에서 콜백을 등록해주고, onDetach() 에서 콜백을 제거해주면 된다.

프로젝트 진행 중 Fragment 에서 뒤로가기키를 눌렀을 때, 이전 프래그먼트로 전환해야할 일이 생겨서 찾아봤다.

profile
매일 조금씩이라도 성장하자

0개의 댓글