Использование FragmentManager для сохранения состояния фрагментов

03.07.2017

Фрагменты поддерживают еще один способ сохранения состояния, который дополняет или заменяет подход с уведомлением фрагментов со стороны Android о необходимости сохранения их состояния.

Класс FragmentManager имеет метод saveFragmentInstanceState(), позволяющий сгенерировать объект класса Fragment.SavedState. Методы, которые упоминались в предыдущем разделе, сохраняют состояние с помощью внутренних средств Android. Хотя известно, что состояние сохраняется, прямой доступ к нему отсутствует. С другой стороны, метод saveFragmentInstanceState() конструирует объект, который представляет сохраненное состояние фрагмента и позволяет управлять тем, будет ли создан фрагмент с этим состоянием, и когда. Восстановление фрагмента с использованием объекта Fragment.SavedState осуществляется в методе setInitialSavedState() класса Fragment. Новые фрагменты лучше всего создавать с помощью статического фабричного метода (например, newInstance()). Внутри этого метода вызывался конструктор по умолчанию, после чего присоединялся пакет аргументов. Взамен можно вызвать метод setInitialSavedState() для восстановления фрагмента в предыдущее состояние. Нет времени на уход за пожилыми близкими? Посмотрите платные дома престарелых в москве цены. Здесь им обеспечат достойное содержание.

Относительно рассматриваемого метода сохранения состояния фрагмента существует несколько предостережений.

• Фрагмент, состояние которого сохраняется, должен быть присоединен к диспетчеру фрагментов.

• Новый фрагмент, созданный с использованием этого сохраненного состояния, должен иметь тот же тип класса, что и фрагмент, для которого сохранялось состояние.

• Сохраненное состояние не может содержать зависимости от других фрагментов.

• Когда воссоздается сохраненный фрагмент, другие фрагменты могут не существовать.