带有嵌套图的 BottomNavigationView
BottomNavigationView with nested graph
在我的初始图 xml 文件中使用嵌套图时,我的应用程序出现问题
这是我的 nav_graph 文件
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@navigation/nav_entries">
<include app:graph="@navigation/nav_entries"/>
<include app:graph="@navigation/nav_states"/>
<include app:graph="@navigation/nav_calendar"/>
<include app:graph="@navigation/nav_more"/>
</navigation>
这是 activity_main
中的片段容器视图
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragmentContainerView"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" />
这是来自主要 activity 的代码,用于使用 nave 控制器设置底部导航视图
private fun setupUi() {
val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragmentContainerView) as NavHostFragment
navController = navHostFragment.navController()
binding.bottomNavigationView.setupWithNavController(navController)
}
但是当我 运行 应用程序时,它会崩溃,这是错误 :
navigation destination com.iranmobiledev.moodino:navigation/nav_entries is not a direct child of this NavGraph
帮我修复。
这是不正确的。
在导航中,不是所有的嵌套导航图都应该用include来定义,应该定义一个节点(片段)作为起始目的地。您可以在嵌套导航图中定义其他片段,并将其与 include 标记一起使用。
使用此代码:
app:startDestination="@id/first_fragment_id">
而不是:
app:startDestination="@navigation/nav_entries">
在我的初始图 xml 文件中使用嵌套图时,我的应用程序出现问题 这是我的 nav_graph 文件
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@navigation/nav_entries">
<include app:graph="@navigation/nav_entries"/>
<include app:graph="@navigation/nav_states"/>
<include app:graph="@navigation/nav_calendar"/>
<include app:graph="@navigation/nav_more"/>
</navigation>
这是 activity_main
中的片段容器视图 <androidx.fragment.app.FragmentContainerView
android:id="@+id/fragmentContainerView"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" />
这是来自主要 activity 的代码,用于使用 nave 控制器设置底部导航视图
private fun setupUi() {
val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragmentContainerView) as NavHostFragment
navController = navHostFragment.navController()
binding.bottomNavigationView.setupWithNavController(navController)
}
但是当我 运行 应用程序时,它会崩溃,这是错误 :
navigation destination com.iranmobiledev.moodino:navigation/nav_entries is not a direct child of this NavGraph
帮我修复。
这是不正确的。 在导航中,不是所有的嵌套导航图都应该用include来定义,应该定义一个节点(片段)作为起始目的地。您可以在嵌套导航图中定义其他片段,并将其与 include 标记一起使用。 使用此代码:
app:startDestination="@id/first_fragment_id">
而不是:
app:startDestination="@navigation/nav_entries">