Получение загруженных фрагментов из нового FragmentStateAdapter - PullRequest
0 голосов
/ 23 сентября 2019

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
    }
}

Это, однако, пахнет утечкой памяти.Кроме того, каким способом я бы удалил фрагменты из списка?

...