Ответ
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 когда нужно полностью обновить экран.