我有一个单身 Activity
应用。我创建了一个单一的 Navigation graph
包含所有可能的目的地(Fragment
).
该 Activity
layout
只包含 <fragment/>
容器,因为它应该是。
有一个主Fragment,包含一个 BottomNavigationView
其中用户可以导航到所有重要的目的地(其中3个)。
当我实现了 BottomNavigationView
在官方文档中的许多教程或事件中都有描述,它取代了完整的内容。Activity
. 因此, BottomNavigationView
不再显示,因为它是包含在一个 Fragment
而不在 Activity
. 我想让它在右边膨胀 layout
的主片段中。
我是否应该使用另一个 Navigation graph
我是否应该使用一个经典的 "主片段"?Listener
(但我将失去所有的兴趣使用一个 Navigation graph
)?是否有我不知道的解决方案?
我如何实现它?我尝试创建两个不同的 Navigation graph
但我不能把它设置为我的 BottomNavigationView
答:我的回答是:我的回答是:我的回答是:我的回答是:我的回答是:我的回答是:我的回答是:我的回答是:我的回答是
创建第二个 Navigation graph
含有您想要的目的地 BottomNavigationView
来访问。
在包含 BottomNavigationView
一定要插入 FragmentContainerView
和一个合适的ID。
然后,由于 这个答案就在这里 你可以很容易地实现它。
只要使用这个来引用嵌套的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")
}