2

我正在使用具有单一活动结构和动态功能模块方法的喷气背包导航组件来分离应用程序模块。我现在不想按需制作模块,所以它们都将安装在安装基础应用程序模块上。在我的应用程序模块导航 XML 中,我有 4 个引用动态模块的包含动态部分:

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/app_navigation_graph"
    app:startDestination="@id/featurePaydarNavGraph">

<include-dynamic
    android:id="@+id/featurePaydarNavGraph"
    app:graphResName="feature_paydar_nav_graph"
    app:moduleName="feature_paydar" />

<include-dynamic
    android:id="@+id/featurePawintoNavGraph"
    app:graphResName="feature_pawinto_nav_graph"
    app:moduleName="feature_pawinto" />

<include-dynamic
    android:id="@+id/featureToolsNavGraph"
    app:graphResName="feature_tools_nav_graph"
    app:moduleName="feature_tools" />

<include-dynamic
    android:id="@+id/featureServicesNavGraph"
    app:graphResName="feature_services_nav_graph"
    app:moduleName="feature_services" />

</navigation>

模块的某些部分具有连接,例如在工具模块中它具有 QR 码功能,可以读取并导航到其他模块中的其他片段,因此我在第二个模块中创建了一个深度链接,以便使用 Navigation-Component 更轻松地进行导航NavManager

问题是如果我在从第一个模块调用深度链接之前没有进入第二个模块,它会导致应用程序崩溃,说找不到深度链接,但是当我进入第二个模块然后从第一个模块调用深度链接时,它会正常工作而没有任何问题。所以我认为应该触发一些东西来让导航理解动态模块深度链接。

我知道谷歌在以下链接(限制部分)的末尾提到动态模块尚不支持深度链接:

导航动态限制

所以我发现它在目标模块打开之前有效,然后从其他模块调用它的深度链接,并且在之前未打开时不起作用。

4

0 回答 0