Как обращаться с savedInstanceState при использовании ViewPager?
Я использую android.support.v4.view.ViewPager
в приложении.
Когда пользователь поворачивает экран, активность уничтожается и воссоздается. Фрагменты, которые в настоящее время активны в ViewPager
(обычно на экране, слева от него и справа от него), сохраняются в savedInstanceState
.
Создается новое действие, вызывается FragmentActivity.onCreate(savedInstanceState)
с состоянием фрагмента, и эти три фрагмента воссоздаются с использованием пакета. Тем не менее, мой onCreate
также устанавливает адаптер ViewPager
и ViewPager
, который создает свои собственные фрагменты заново, что приводит к ДВА каждого из этих трех фрагментов.
Как я могу связать автоматически повторно созданные фрагменты с моим адаптером ViewPager
, а не создавать их с нуля?
Ответы
Ответ 1
Ничего. Похоже, что я неправильно использовал FragmentPagerAdapter
.
Правильный способ использования FragmentPagerAdapter
- создать экземпляр нового фрагмента в getItem()
. Вместо этого я создавал все свои фрагменты в конструкторе адаптера, сохраняя их в массиве, а затем просматривал их в массиве и возвращал соответствующий фрагмент в getItem()
.
Если вы создаете экземпляр фрагмента из getItem()
, тогда FragmentPagerAdapter.instantiateItem()
будет автоматически использовать фрагмент recycle вместо создания нового экземпляра.