【发布时间】:2020-06-08 18:21:50
【问题描述】:
所以我在当前应用程序中的模块具有这种结构。
我还没有找到任何关于多模块导航的官方文档,但是我发现了这个article,所以这是我的 gradle 文件的样子:
功能 1 - 细节
...
implementation project(":base")
implementation project(":feature-2-detail")
...
功能 2 - 细节
...
implementation project(":base")
implementation project(":feature-1-detail")
...
功能 3 - 细节
...
implementation project(":base")
implementation project(":feature-1-detail")
...
这是我的导航图:
功能 1 - 细节
<navigation ...
android:id="@+id/graph_feature_1_id">
<include app:graph="@navigation/graph_feature_2" />
<fragment ...
android:id="@+id/nav_feature_1">
<action ...
app:destination="@+id/graph_feature_2_id" />
</fragment>
</navigation>
功能 2 - 细节
<navigation ...
android:id="@+id/graph_feature_2_id">
<include app:graph="@navigation/graph_feature_1" />
<fragment ...
android:id="@+id/nav_feature_2">
<action ...
app:destination="@+id/graph_feature_1_id" />
</fragment>
</navigation>
功能 3 - 细节
<navigation ...
android:id="@+id/graph_feature_3_id">
<include app:graph="@navigation/graph_feature_1" />
<fragment ...
android:id="@+id/nav_feature_3">
<action ...
app:destination="@+id/graph_feature_1_id" />
</fragment>
</navigation>
所以一切都适用于这种设置,但这里的问题是要将模块连接到另一个模块,我们必须将另一个功能添加为当前功能的依赖项。就像我的情况一样,Feature 1 - Detail 可以转到 Feature 2 - Detail,反之亦然,这样做会给我在 gradle 中的循环依赖。
还有其他方法可以进行多模块导航吗?我试过使用深层链接,但无济于事。
任何帮助将不胜感激!谢谢!
【问题讨论】:
-
您是否考虑过使用深层链接进行导航?我打算开始重构功能模块设置,但我遇到了同样的问题,我唯一的解决方案是使用深度链接
-
对于活动,我使用深度链接来执行多模块导航,但对于片段,我仍在尝试寻找解决方案。
-
您可以通过应用模块级依赖注入提供目标片段的 id
标签: android android-architecture-components android-architecture-navigation