如何在导航图中将包含的图设置为startDestination?

时间:2019-12-30 11:11:32

标签: android android-fragments kotlin navigation-drawer

我的应用程序中有多个模块,其中一些是UI模块。UI模块中有一个NavigationGraph,它包含在应用程序内部。

该应用同时具有BottomNavigationViewToolbar。因此,我陷入了一些过渡。我将在下面分享代码并阐述问题。

这是我的应用导航图

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mobile_navigation"
    app:startDestination="@+id/navigation_group">

    <fragment
        android:id="@+id/navigation_group"
        android:name="com.example.group.view.fragments.GroupHostFragment"
        android:label="@string/title_group"
        tools:layout="@layout/fragment_home" />

    <fragment
        android:id="@+id/navigation_scene"
        android:name="com.wisilica.scene.view.SceneHostFragment"
        android:label="@string/title_scene"
        tools:layout="@layout/fragment_dashboard" />

    ...

</navigation>

每个片段都是UI模块中的主机片段。

我的仪表板活动布局


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbarLayout">

        <com.google.android.material.appbar.MaterialToolbar
            android:id="@+id/toolbar" />
    </com.google.android.material.appbar.AppBarLayout>

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottomNavView"

        .................

        app:menu="@menu/bottom_nav_menu" />

    <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"

        .................

        app:navGraph="@navigation/mobile_navigation" />

</androidx.constraintlayout.widget.ConstraintLayout>

DashboardActivity代码

        setupActionBarWithNavController(navController, appBarConfiguration)

        toolbar.setupWithNavController(navController)
        bottomNavView.setupWithNavController(navController)

点击底部菜单项时,它运行良好,并导航到其他主机片段。但是问题是 homeUp按钮仅显示单击第二个主机片段,而不是单击第一个主机片段及其目的地。

   Dashboard Graph
    |            |
    v            v
hostA     |   host B
  |              |
  V              V
dest1 (dest2)    dest1(dest2)

最初,我们在hostA上(将显示目标1),但是homeUp符号将不显示(确定),然后单击dest2,homeUp符号将不显示(为什么)

单击了底视图菜单项并移至hostB,显示了homeUp符号(为什么),并单击了按钮
并移至hostA。

我尝试将hostA和hostB的navGraph包括在内,然后它对BottomNavigationView没有响应

请帮助我解决此问题?

预先感谢

1 个答案:

答案 0 :(得分:0)

您需要对Graph XML Fragments使用相同的菜单项ID。

其他事物将被自动管理。