ViewPager2 дает нам другой FragmentStateAdapter
Это пример его использования
class AddRestaurantPagerAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
FragmentStateAdapter(fragmentManager, lifecycle) {
override fun getItemCount() = 3
override fun createFragment(position: Int): Fragment {
val fragment = when (position) {
0 -> Page1()
1 -> Page2()
2 -> Page3()
else -> null
}!!
return fragment
}
}
Вот как мы его используем.
val adapter = AddRestaurantPagerAdapter(fragmentManager!!, lifecycle)
addRestaurantVp.orientation = ViewPager2.ORIENTATION_HORIZONTAL
addRestaurantVp.adapter = adapter
addRestaurantVp.setPageTransformer(MarginPageTransformer(1300))
Я не вижу какого-либо механизма, с помощью которого мы можем получить загруженные фрагменты из адаптера.
Один из методов - создать такой список.
class AddRestaurantPagerAdapter(fragmentManager: FragmentManager, lifecycle: Lifecycle) :
FragmentStateAdapter(fragmentManager, lifecycle) {
var fragments = mutableListOf<Fragment>()
override fun getItemCount() = 3
override fun createFragment(position: Int): Fragment {
val fragment = when (position) {
0 -> RestaurantDetailsPage()
1 -> RestaurantWaiterPage()
2 -> RestaurantItemsPage()
else -> null
}!!
fragments.add(fragment)
return fragment
}
}
Это, однако, пахнет утечкой памяти.Кроме того, каким способом я бы удалил фрагменты из списка?