-
개인 과제 트러블 슈팅(프래그먼트 트랜잭션)Android 2024. 4. 22. 21:05
해결 전(이미지 검색 클릭 시 리스트 안보임 + 하트 취소됨) 해결 코드 전
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) setFragment(SearchFragment()) // fragment 방식을 replace 와 add 비교해서 다음엔 add 적용해보기 binding.apply { btnSearch.setOnClickListener { setFragment(SearchFragment()) } btnStore.setOnClickListener { val fragment = StoreFragment.newInstance(selectedImageList) setFragment(fragment) } } } private fun setFragment(fragment:Fragment) { supportFragmentManager.commit { replace(R.id.frameLayout,fragment) setReorderingAllowed(true) addToBackStack("") } }
해결 후 - 이미지 검색 버튼 클릭 시 가장 최근 기록 보임 + 하트 눌린거 그대로 해결 코드 후
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.d("MainActivity","onCreate") setContentView(binding.root) supportFragmentManager.beginTransaction() .setReorderingAllowed(true) .add(R.id.frameLayout,searchFragment) // 어짜피 onCreate는 한번만 실행되니까 add 를 쓰자! .commit() binding.apply { btnSearch.setOnClickListener { supportFragmentManager.beginTransaction() .setReorderingAllowed(true) .addToBackStack(null) .remove(storeFragment) // remove를 한 이유: 보관함 프래그먼트는 계속 업데이트 되어야 하니까 + hide를 하면 add할때 계속 프래그먼트 쌓임 .show(searchFragment) // 핵심코드! .commit() } btnStore.setOnClickListener { supportFragmentManager.beginTransaction() .setReorderingAllowed(true) .addToBackStack(null) .hide(searchFragment) .add(R.id.frameLayout,storeFragment) .commit() } } }
결론
Fragment 트랜잭션에서 hide, remove, replace 등의 차이를 정확히 알고 있어야 한다.
'Android' 카테고리의 다른 글
다이얼로그 (0) 2024.04.25 프래그먼트 생명주기 (0) 2024.04.24 Fragment 3가지 데이터 전달 방식 (0) 2024.04.19 [Android] RecyclerView (0) 2024.04.15 [과제] 스탠다드반 3주차 특별과제 정리 (0) 2024.04.12