[Android/Kotlin] Fragment 뒤로가기 onBackPressed()

hyomin·2022년 3월 5일
0

현재 보여지는 프래그먼트를 종료하고 이전 화면으로 돌아갈때 기본적으로 사용하는 코드이다.

requireActivity().supportFragmentManager.beginTransaction().remove(this).commit()
requireActivity().supportFragmentManager.popBackStack()

나는 특정 아이콘을 눌렀을 때가 아니라 메뉴 바의 뒤로가기를 눌렀을때 실행하고 싶다.

이 Fragment를 띄운 Activity에서 onBackpressed 를 호출하는 Interface를 만들어 연결하도록 한다.

class MainActivity: BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate){
   
   //Listener역할을 할 Interface 생성
   interface onBackPressedListener {
        fun onBackPressed()
   }
  
   override fun onBackPressed(){
   //아래와 같은 코드를 추가하도록 한다
  //해당 엑티비티에서 띄운 프래그먼트에서 뒤로가기를 누르게 되면 프래그먼트에서 구현한 onBackPressed 함수가 실행되게 된다.
   val fragmentList = supportFragmentManager.fragments
            for (fragment in fragmentList) {
                if (fragment is onBackPressedListener) {
                    (fragment as onBackPressedListener).onBackPressed()
                    return
                }
            }
  ...
  }
}
  

Fragment 에서는 MainActivity에서 생성한 onBackPressedListener을 상속받도록 한다.

class TestFragment: BaseFragment<FragmentTestBinding>(FragmentTestBinding::inflate), MainActivity.onBackPressedListener{


//override 해서 사용해주면 된다!
    override fun onBackPressed() {
   		requireActivity().supportFragmentManager.beginTransaction().remove(this).commit()
        //requireActivity().supportFragmentManager.popBackStack()
    }

}
profile
🌱

0개의 댓글