현재 보여지는 프래그먼트를 종료하고 이전 화면으로 돌아갈때 기본적으로 사용하는 코드이다.
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()
}
}