【问题标题】:Navigate from one dynamic feature module to another with Jetpack navigation architecture component使用 Jetpack 导航架构组件从一个动态功能模块导航到另一个
【发布时间】:2020-05-06 08:22:28
【问题描述】:

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

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

【问题讨论】:

    标签: android android-app-bundle android-jetpack-navigation android-module android-navigation-graph


    【解决方案1】:

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

    要使用导航图中的动态功能模块,您需要使用Android Studio 4.0或以上。

    第 1 步:

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

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

    第 2 步:

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

    在你的 payment/build.gradle 中

    dependencies {
    implementation project(':app')
    }
    

    在你的相机/build.gradle中

    dependencies {
    implementation project(':app')
    }
    

    在你的视频/build.gradle 中

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

    第三步:

    您需要为 Android 工作室启用 feature.on.feature 标志。

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

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

    第四步:

    您需要使用DynamicNavHostFragment 而不是NavHostFragment

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

    第五步:

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

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

    导航库将为您完成剩下的工作。

    编码愉快:)

    【讨论】:

    • 我无法在 android studio 4.2 上找到 Go to Help > Edit Custom VM Options,我们需要在 4.2 中执行此步骤吗?
    猜你喜欢
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2021-01-03
    • 2020-09-01
    相关资源
    最近更新 更多