在Android上探索动态特征导航

在这篇文章中,我们将深入研究动态特性导航库,不仅学习如何在应用程序中使用它,还将了解它的组件如何在引擎盖下工作。

导航到动态功能目标

在开始使用库之前,我们需要继续并将依赖项添加到应用程序中。重要的是要注意到这个库仍然在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为 特征碎片。您会注意到,我们在片段目的地设置了三个不同的属性:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>