Как сохранять стек фрагмента

«Как сохранять стек фрагмента» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для сохранения стека фрагментов при повороте экрана или пересоздании Activity используйте FragmentManager.saveBackStack(). Это сохранит текущий стек в Bundle, который можно восстановить через FragmentManager.restoreBackStack().

Пример:

// Сохранение
val savedState = supportFragmentManager.saveBackStack("my_stack")

// Восстановление
supportFragmentManager.restoreBackStack("my_stack", savedState)

Важные моменты:

  1. Для корректной работы все фрагменты должны иметь уникальные теги
  2. Состояние сохраняется только для транзакций, добавленных в back stack
  3. Альтернатива - использовать ViewModel или onSaveInstanceState для хранения информации о текущем стеке