В чем разница между add и replace у Fragment Transaction

«В чем разница между add и replace у Fragment Transaction» — вопрос из категории Android компоненты, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример:

// add - сохраняет предыдущие фрагменты
supportFragmentManager.beginTransaction()
    .add(R.id.container, FragmentA())
    .commit()

// replace - удаляет все и добавляет новый
supportFragmentManager.beginTransaction()
    .replace(R.id.container, FragmentB())
    .commit()

Ключевые различия:

  • add - стек сохраняется, можно вернуться назад
  • replace - очищает контейнер, предыдущие фрагменты уничтожаются
  • При replace вызываются onDestroyView() у старых фрагментов

Используйте add для навигации, replace когда нужно полностью обновить экран.