← Назад к вопросам
У какого класса вызывается метод replace при навигации с помощью Fragment
2.0 Middle🔥 91 комментариев
#Жизненный цикл и навигация
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
У какого класса вызывается метод replace при навигации с помощью Fragment
Метод replace() вызывается у класса FragmentTransaction. Это класс, который управляет операциями с фрагментами (добавление, удаление, замена, скрытие и т.д.).
Как это работает
// 1. Получаем FragmentManager
val fragmentManager = supportFragmentManager
// 2. Начинаем транзакцию (получаем FragmentTransaction)
val transaction = fragmentManager.beginTransaction()
// 3. Вызываем replace() на FragmentTransaction
transaction.replace(R.id.container, NewFragment())
// 4. Применяем изменения
transaction.addToBackStack(null) // Добавляем в back stack
transaction.commit()
Современный подход с replaceReusable()
На Android Jetpack рекомендуют использовать более новый API:
val fragmentManager = supportFragmentManager
fragmentManager.beginTransaction()
.replace(R.id.container, NewFragment(), "TAG")
.addToBackStack(null)
.commit()
Классы в иерархии
FragmentManager
└─ beginTransaction() → FragmentTransaction
└─ replace()
└─ add()
└─ remove()
└─ addToBackStack()
└─ commit()
Полный пример навигации
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.add(R.id.container, HomeFragment())
.commit()
}
}
fun navigateToDetails() {
supportFragmentManager.beginTransaction()
.replace(R.id.container, DetailsFragment())
.addToBackStack(null)
.commit()
}
}
Разница между add() и replace()
- add() — добавляет фрагмент поверх существующего
- replace() — удаляет текущий фрагмент и добавляет новый
Ответ: FragmentTransaction — это класс, у которого вызывается метод replace() при навигации.