这已经过去一年了,但该库现在可以支持这个确切的用例!作为2.1.0-alpha03 https://developer.android.com/jetpack/androidx/releases/navigation#2.1.0-alpha03,我们可以通过深层链接 URI 进行导航。
我们可以让它们之间不相互了解并使用深层链接导航,而不是将这些功能作为实现细节相互添加。
功能 1 - 详细信息 - build.gradle
dependencies {
implementation project(':base')
}
与相同特征 2 - 细节。它不需要知道其他模块。
要进行模块间导航,我们必须首先定义深层链接,以便通过deepLink
tag.
功能 1 - 详细信息 - 导航图
<navigation ...
android:id="@+id/graph_feature_1_detail_id">
<fragment ...
android:id="@+id/nav_feature_1_detail">
<deepLink app:uri="myApp://feature1detail"/>
</fragment>
</navigation>
功能 2 - 详细信息 - 导航图
<navigation ...
android:id="@+id/graph_feature_2_detail_id">
<fragment ...
android:id="@+id/nav_feature_2_detail">
<deepLink app:uri="myApp://feature2detail"/>
</fragment>
</navigation>
现在我们已经设置了 URI 的深层链接,我们可以直接在NavController
所以在片段中特征 1 - 细节,也许点击按钮?任何需要执行导航的地方
class Feature1DetailFragment {
fun onViewCreated(...) {
...
view.setOnClickListener {
val uri = Uri.parse("myApp://feature2detail")
findNavController().navigate(uri)
}
}
}
And in 特征 2 - 细节,
class Feature2DetailFragment {
fun onViewCreated(...) {
...
view.setOnClickListener {
val uri = Uri.parse("myApp://feature1detail")
findNavController().navigate(uri)
}
}
}
瞧!模块间导航。
在撰写本文时,最新的稳定版本是2.1.0-rc01
.
虽然我还没有在更复杂的项目上尝试过这个,但我喜欢这个库,并且希望看到这个库更加成熟!
我创建了一个中等文章 https://medium.com/@kurt.r.acosta/using-the-navigation-component-in-a-modular-world-e7578825962对这个。你可以看一下。干杯!