A 프래그먼트 -> B 프래그먼트로 이동할 때 스택을 쌓았다가
B에서 뒤로가기 버튼을 누르면 다시 A로 돌아올 수 있도록!
일종의 백스택이라고 보면 된다.
👉🏻 화면 이동 및 백스택 관리
해당 게시물에 이어서 작성하는 내용이다.
private fun moveToBFragment(album: Album) {
(context as MainActivity).supportFragmentManager.beginTransaction()
.add(R.id.main_frm, BFragment().apply {
arguments = Bundle().apply {
// 넘길 데이터를 자유롭게 추가
..
}
})
.addToBackStack(null) // 백 스택에 트랜잭션을 추가
.commitAllowingStateLoss()
}
/* 뒤로가기 */
binding.backIv.setOnClickListener {
val fragmentManager = (context as MainActivity).supportFragmentManager
// 이전의 모든 프래그먼트를 백 스택에서 제거 (AFragment)
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
}
이런 식으로 작성해주고 나면, 스택에도 더 이상 화면이 쌓이지 않는다!
아무리 A <-> B 프래그먼트를 왔다갔다 하더라도 뒤로가기 한 번만 누르면 앱이 바로 종료될 수 있다.