Навигация с BottomNavigationView внутри фрагмента (не активности) с использованием компонента навигации и графика навигации - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть одно Activity приложение. Я создал один Navigation graph, содержащий все возможные пункты назначения (Fragment).

В Activity layout содержится только контейнер <fragment/>, как и должно быть.

Там является основным фрагментом, содержащим BottomNavigationView, где пользователь может перейти ко всем важным пунктам назначения (3 из них).

Когда я реализую BottomNavigationView, как описано во многих руководствах или событиях в официальной документации, он заменяет полное содержание Activity. Следовательно, BottomNavigationView больше не отображается, поскольку он содержится в Fragment, а не в Activity. Я хочу, чтобы в главном фрагменте было указано правильное значение layout.

Должен ли я использовать другой Navigation graph, задав c для основного фрагмента? Должен ли я использовать класс c Listener (но я потеряю весь интерес к использованию Navigation graph)? Есть ли решение, которое я не знаю?

Как мне его реализовать? Я пытался создать два разных Navigation graph, но я не могу установить его на BottomNavigationView

1 Ответ

0 голосов
/ 30 апреля 2020

Ответ:

Создайте вторую Navigation graph, содержащую пункт назначения, к которому ваш BottomNavigationView должен получить доступ.

Во фрагменте, содержащем BottomNavigationView, обязательно вставьте FragmentContainerView и соответствующий идентификатор.

Тогда, благодаря Этот ответ прямо здесь , вы можете легко реализовать его.

Juste ссылается на вложенный NavHost, используя это:

val nestedNavHostFragment = childFragmentManager.findFragmentById(R.id.bottom_nav_host) as? NavHostFragment

val navController = nestedNavHostFragment?.navController

val bottomNavigationView = view.findViewById<BottomNavigationView>(R.id.bottom_navigation)

if (navController != null) {
    bottomNavigationView.setupWithNavController(navController)
} else {
    throw RuntimeException("Controller not found")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...