0

如何使用导航组件从基础模块或动态模块导航到动态模块?

如何在导航图中定义目标模块?

4

1 回答 1

1

Android Studio 4.0 引入了支持导航图的动态特性模块。

要使用导航图中的动态功能模块,您需要使用Android Studio 4.0或更高版本。

步骤1:

在您的主 app/build.gradle 中,定义功能模块依赖项

    android {
    ...
    dynamicFeatures = [":camera", ":video", ":payment"]
   }

第2步:

在功能模块 build.gradle 文件中,定义其模块依赖项。请注意,一个动态功能模块可以依赖于另一个动态功能模块。

在您的付款/build.gradle

dependencies {
implementation project(':app')
}

在你的相机/build.gradle

dependencies {
implementation project(':app')
}

在你的视频/build.gradle

dependencies {
implementation project(':app')
implementation project(':camera')
}

第 3 步:

您需要feature.on.feature为 Android Studio 启用该标志。

  1. 转到帮助 > 编辑自定义 VM 选项
  2. 将 rundebug.feature.on.feature 添加到文件中,保存更改,然后重新启动 Android Studio。

    在此处输入图像描述

  3. 运行 > 编辑配置,在运行/调试配置中,您可以定义各种安装配置以进行测试。

在此处输入图像描述

第4步:

您需要使用DynamicNavHostFragment而不是NavHostFragment

<fragment
  android:id="@+id/nav_host_fragment"
  android:name="androidx.navigation.dynamicfeatures.
  fragment.DynamicNavHostFragment"
  app:navGraph="@navigation/nav_graph"
  … />

第 5 步:

定义您的导航图。这里可以使用属性app:moduleName来定义模块依赖。

    <navigation>
  <fragment
    app:moduleName="featureA"
    android:name="full.path.to.MyFragment"/>
  <activity
    app:moduleName="featureB"
    android:name="full.path.to.MyActivity"/>
</navigation>

导航库将为您完成其余的工作。

快乐编码:)

于 2020-05-06T08:22:28.303 回答