在这篇文章中,我们将深入研究动态特性导航库,不仅学习如何在应用程序中使用它,还将了解它的组件如何在引擎盖下工作。
导航到动态功能目标
在开始使用库之前,我们需要继续并将依赖项添加到应用程序中。重要的是要注意到这个库仍然在alpha中,所以如果你有机会使用它,那么这对开发人员来说是一个很好的时机去提供反馈。
implementation "androidx.navigation:navigation-dynamic-features-
fragment:2.3.0-alpha03"
如果我们以前使用的是导航组件库,那么我们的主机片段应该是这样的:
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
app:defaultNavHost="true"
app:navGraph="@navigation/main_nav" />
对于动态导航器,我们需要为新的DynamicNavHostFragment切换此选项。这个导航主机类允许我们使用在动态特性模块中定义的目的地来处理导航。
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.dynamicfeatures
.fragment.DynamicNavHostFragment"
app:defaultNavHost="true"
app:navGraph="@navigation/main_nav" />
现在我们的导航主机正在使用DynamicNavHostFragment类,我们可以继续将我们的第一个导航目的地从功能模块添加到我们的图中。
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_nav"
app:startDestination="@id/mainFragment">
<fragment
android:id="@+id/mainFragment"
android:name="co.joebirch.navigationsample.MainFragment" >
</navigation>
现在我们有了导航图,以及 目的地定义为我们的主片段引用。有了这个声明,我们现在想继续并在我们的图中添加一个目的地——我们的第一个目的地将来自一个动态特性模块。让我们继续把它添加到我们的导航图中。
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_nav"
app:startDestination="@id/mainFragment">
<fragment
android:id="@+id/mainFragment"
android:name="co.joebirch.navigationsample.MainFragment" />
<fragment
app:moduleName="feature_one"
android:id="@+id/featureOneFragment"
android:name="co.joebirch.feature_one.FeatureOneFragment" />
</navigation>
我们在这里添加了我们的目的地,id为 特征碎片。您会注意到,我们在片段目的地设置了三个不同的属性:

最低0.47元/天 解锁文章
2235

被折叠的 条评论
为什么被折叠?



