Android Fragment isAdded возвращает false после изменения конфигурации (поворот экрана)

#android #android-fragments #fragment

#Android #android-фрагменты #фрагмент

Вопрос:

У меня есть действие с ViewPager2. ScreenSlidePagerAdapter создает мои 4 фрагмента в ViewPager. После проскальзывания по фрагментам isAdded возвращается true для каждого фрагмента. После поворота экрана изменение конфигурации isAdded возвращается false для всех фрагментов, но я должен сохранить их добавленными. Есть ли возможность повторно добавить их или как я могу сохранить их добавленными?

ОБНОВЛЕНИЕ 1: после изменения конфигурации isAdded только false для всех фрагментов, которые я просматривал до изменения конфигурации. Для других фрагментов isAdded true также после изменения конфигурации.

Код адаптера:

     private inner class ScreenSlidePagerAdapter(fa: FragmentActivity, data: Bundle) : FragmentStateAdapter(fa) {
        val fragmentBundle: Bundle = data


        override fun createFragment(position: Int): Fragment {
            when (position) {
                1 -> { 
                    sliderFragment2.arguments = fragmentBundle                                  
                    return sliderFragment2
                }
                2 -> {
                    sliderFragment3.arguments = fragmentBundle
                    return sliderFragment3
                }
                3 -> {
                    sliderFragment4.arguments = fragmentBundle
                    return sliderFragment4
                }
                else -> {
                    sliderFragment1.arguments = fragmentBundle
                    return sliderFragment1
                }
            }
        }

        override fun getItemCount(): Int {
            return NUM_PAGES
        }
    }
}
 

Комментарии:

1. ViewPager2 автоматически повторно присоединяет существующие экземпляры фрагментов. Похоже, что ваш createFragment() адаптер в вашем адаптере на самом деле не создает совершенно новые экземпляры фрагментов? Пожалуйста, укажите свой код адаптера.

2. Так что sliderFragment1 же такое и т.д.? Что вы делаете с этими фрагментами?

3. На данный момент 4 фрагмента содержат только текстовое представление для целей тестирования…

4. Нет, где вы их создаете, почему вы сохраняете ссылку на них и т. Д.?

5. Фрагменты создаются сразу после объявления класса: class MyActivity : FragmentActivity() { private var sliderFragment1: Fragment = SliderFragment1() …