#android #android-fragments #android-activity #android-navigation #android-jetpack-navigation
#Android #android-фрагменты #android-активность #android-навигация #android-jetpack-навигация
Вопрос:
Я много искал, и большинство людей использовали эту строку кода для запуска NavController в Activity:
val navHostFragment = supportFragmentManager
.findFragmentById(R.id.fragmentContainerView_mainActivity)
as NavHostFragment
navController = navHostFragment.navController
Мне интересно, почему мы не можем просто использовать findViewById
метод Activity для получения FragmentContainerView.
Ответ №1:
Если то, что вы ищете FragmentContainerView
, вы, безусловно, можете использовать findViewById
, но если вы хотите получить доступ NavController
, вам нужно использовать методы, предоставляемые библиотекой.
// from fragments
Fragment.findNavController()
// from views
View.findNavController()
// from activity
Activity.findNavController(viewId: Int)
// from NavHostFragment
navHostFragment.navController
Комментарии:
1. итак, можем ли мы использовать Activity.findNavController(R.id.fragmentContainerView) для получения NavController?
2. Да, я не тестировал FragmentContainerView, но я думаю, что вы должны иметь доступ к NavController из корневого представления, а также к любым вложенным представлениям в иерархии представлений