Как обращаться с 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 вместо создания нового экземпляра.