Что хранится в Back Stack у FragmentManager

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

Ответ

Back Stack (стек возврата) FragmentManager содержит последовательность транзакций с фрагментами. При замене/добавлении фрагмента через addToBackStack(null), в стек помещается не сам фрагмент, а запись о транзакции (FragmentTransaction). При нажатии "Назад" система отменяет последнюю транзакцию из стека.

Пример:

supportFragmentManager.beginTransaction()
    .replace(R.id.container, FragmentB())
    .addToBackStack("transaction_B") // можно указать имя
    .commit()

Нюансы:

  • Стек может содержать транзакции с несколькими фрагментами
  • Имя в addToBackStack() используется для поиска транзакции (например, popBackStack("name", 0))
  • popBackStack() удаляет транзакции до указанной (POP_BACK_STACK_INCLUSIVE)