具有多模块 android 的嵌套图形导航?

Nested graph navigation with multi module android?

我的应用程序有 3 个模块

app 模块在 gradle

中添加了两个其他模块

app 模块有主图,其中包含来自身份验证和 home 模块的嵌套图

我在身份验证模块中有登录片段,我想导航到位于主页模块中的主页片段

下面是我的图表

主图

<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/staging_nav_graph"
app:startDestination="@id/splashFragment2">

<fragment
    android:id="@+id/splashFragment2"
    android:name="splash.SplashFragment"
    android:label="fragment_splash"
    tools:layout="@layout/fragment_splash" >
    <action
        android:id="@+id/action_open_login"
        app:destination="@id/staging_authentication_nav_graph"
        app:popUpTo="@+id/staging_nav_graph"
        app:popUpToInclusive="true"/>
</fragment>

<include app:graph="@navigation/staging_authentication_nav_graph" />
<include app:graph="@navigation/staging_home_nav_graph" />
</navigation>

身份验证模块图

<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/staging_authentication_nav_graph"
app:startDestination="@id/loginFragment">

<fragment
    android:id="@+id/loginFragment"
    android:name="com.ocatave.featureauthentication.LoginFragment"
    android:label="login_fragment"
    tools:layout="@layout/login_fragment">
</fragment>
</navigation>

这是主图

<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/staging_home_nav_graph"
app:startDestination="@id/homeFragment">

<fragment
    android:id="@+id/homeFragment"
    android:name="com.octave.home.HomeFragment"
    android:label="home_fragment"
    tools:layout="@layout/home_fragment" />

</navigation>

如何从 loginfragment 导航到 homeFragment?

在深度链接的帮助下我能够做到这一点

在导航图中

<fragment
    android:id="@+id/homeFragment"
    android:name="com.octave.home.HomeFragment"
    android:label="HomeFragment" >
    <deepLink app:uri="octave://home"/>
</fragment>

和导航代码

findNavController().navigate(Uri.parse("octave://home"))