#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() …