✨ 오늘 공부한 것
- 알고리즘 호텔 대실 풀이 - 스탠다드반 실시간 강의 - 프래그먼트 복습
맨날 프래그먼트를 사용할 때 뷰페이저와 같이 쓰다보니 뷰페이저 없는 프래그먼트는 사용할 수 없는 줄 알았다. 그러다 뷰페이저 말고도 다른 방법이 있다는 것을 알게되어 정리해보려고 한다.
먼저 프래그먼트가 차지할 공간을 지정해줘야 한다. fragment 태그, FrameLayout, FragmentContainerView 3가지 방법이 있지만 안드로이드에서는 마지막 FragmentContainerView의 사용을 적극 권장하고 있다.
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
FragmentContainerView는 FrameLayout을 상속 받아 프래그먼트 관련 작업들을 편하게 할 수 있는 추가적인 기능들을 포함하고 있기 때문에 사용하지 않을 이유가 없다.
프래그먼트는 액티비티의 일부분이며 특정 조건에 따라 표시되는 프래그먼트가 바뀌거나 추가되어야 하는데, 이 작업을 Transaction을 통해 다룰 수 있다.
val mainFragment = MainFragment()
parentFragmentManager.commit {
// 걍 무조건 써야한다.
// 성능이 좋아진다!
setReorderingAllowed(true)
// replace 말고도 add, remove, show, hide도 사용가능하다.
replace(R.id.fragment_container, mainFragment)
// 사용자가 back 버튼을 눌렀을 때 이전의 프래그먼트를 기억하도록 한다.
// name을 지정해줄 수 있지만, 보통 null로 많이 쓰인다.
addToBackStack(null)
}