Ответ
Для реализации NavGraph на FragmentManager можно использовать FragmentTransaction и теги. Вот пример:
supportFragmentManager.beginTransaction()
.replace(R.id.container, MyFragment::class.java, null, "my_fragment_tag")
.addToBackStack("my_fragment_tag")
.commit()
Ключевые моменты:
- Используйте
replace()вместоadd()для замены фрагментов - Указывайте тег для идентификации фрагмента
addToBackStack()позволяет навигацию назад- Для обработки нажатия "Назад" переопределите
onBackPressed():
override fun onBackPressed() {
if (supportFragmentManager.backStackEntryCount > 0) {
supportFragmentManager.popBackStack()
} else {
super.onBackPressed()
}
}
Недостатки такого подхода:
- Нет встроенной анимации переходов
- Сложнее обрабатывать глубокие ссылки
- Больше boilerplate кода по сравнению с Navigation Component