Сохранение ArrayList‹Fragment› при изменении ориентации

Я использую ArrayList, который содержит фрагменты. Мне нужно сохранить фрагменты, которые находятся в этом массиве, во время изменения ориентации.

Если бы список массивов содержал объекты пользовательского типа, такие как ArrayList, который я определяю сам, я мог бы заставить «ComplexDatadype» реализовать Parceable и сохранить его в onSaveInstanceState.

Но что я могу сделать с массивом, содержащим фрагменты?


person deimos1988    schedule 15.06.2014    source источник
comment
Фрагменты управляются FragmentManager? IOW, вы уже использовали FragmentTransaction на этих фрагментах?   -  person CommonsWare    schedule 15.06.2014
comment
Они используются в FragmentPagerAdapter (я использую viewpager), но я хотел бы знать, есть ли способ сохранить их без использования каких-либо менеджеров.   -  person deimos1988    schedule 15.06.2014


Ответы (1)


Они используются в FragmentPagerAdapter (я использую viewpager), но я хотел бы знать, есть ли способ сохранить их без использования каких-либо менеджеров.

Если фрагменты находятся в FragmentManager, FragmentManager уже будет управлять своим состоянием. В этом случае вам не нужно сохранять состояние фрагментов — вам нужно сохранить состояние ArrayList, чтобы вы могли перестроить этот ArrayList с помощью findFragmentByTag() или его эквивалента.

Если фрагменты не находятся в FragmentManager, вам придется играть эту роль самостоятельно, попросив эти фрагменты сохранить их состояние экземпляра в их собственном Fragment.SavedState, и вы организуете включение этих Fragment.SavedState экземпляров в общее сохраненное состояние экземпляра верхнего уровня Bundle.

person CommonsWare    schedule 15.06.2014