带有嵌套图的 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">