📜  jetpack 导航依赖项 (1)

📅  最后修改于: 2023-12-03 15:02:07.850000             🧑  作者: Mango

Jetpack 导航依赖项

Jetpack Navigation 组件是 Android Jetpack 中的一个可用于轻松实现应用内导航的组件。它由多个部分组成,其中关键部分是 Navigation Graph 和 NavHost。

Navigation Graph

Navigation Graph 是一个 XML 文件,用于定义应用程序导航的所有可能路径。此文件描述了整个应用程序中的所有目标,以及它们之间的关系。

Navigation Graph 包含以下几个主要部分:

  • Destination:导航目标可以是 Activity、Fragment、Dialog 或自定义目标。每个目标都定义了 ID 和相应的视图要加载到的容器。
  • Actions:操作定义了从一种目标到另一种目标的导航行为。您可以定义两个目标之间的多个操作。

Navigation Graph 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:startDestination="@id/homeFragment">

    <fragment
        android:id="@+id/homeFragment"
        android:name="com.example.navigationdemo.HomeFragment"
        android:label="fragment_home"
        tools:layout="@layout/fragment_home" >
        <action
            android:id="@+id/action_homeFragment_to_settingsFragment"
            app:destination="@id/settingsFragment"
            app:popUpTo="@id/settingsFragment"
            app:popUpToInclusive="true" />
        <action
            android:id="@+id/action_homeFragment_to_profileFragment"
            app:destination="@id/profileFragment" />
    </fragment>

    <fragment
        android:id="@+id/settingsFragment"
        android:name="com.example.navigationdemo.SettingsFragment"
        android:label="fragment_settings"
        tools:layout="@layout/fragment_settings" />

    <fragment
        android:id="@+id/profileFragment"
        android:name="com.example.navigationdemo.ProfileFragment"
        android:label="fragment_profile"
        tools:layout="@layout/fragment_profile" />
</navigation>
NavHost

NavHost 是一个空容器,用于在其内部加载和显式不同的目标。NavHost 必须显示在布局文件中,并且必须与 Navigation Graph 关联。

以下是 NavHost 的示例 XML 文件:

<fragment
    android:id="@+id/my_nav_host_fragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:defaultNavHost="true"
    app:navGraph="@navigation/my_navigation_graph" />
导航依赖项

为了使用 Jetpack Navigation,您需要在 Gradle 文件中添加适当的依赖项:

dependencies {
    def nav_version = "2.3.0"

    // Jetpack Navigation
    implementation "androidx.navigation:navigation-fragment:$nav_version"
    implementation "androidx.navigation:navigation-ui:$nav_version"
}

navigation-fragment 依赖项包含 NavHostFragment,因此您可以将其添加到布局文件中。navigation-ui 依赖项包含 NavigationUI 类,您可以使用该类在应用程序工具栏中设置导航和应用程序菜单项。

结论

Jetpack Navigation 可以帮助您轻松实现应用内导航,使应用程序的导航更加易于使用和维护。使用 Jetpack Navigation 组件,您可以在 Navigation Graph 中定义和组织导航和操作。NavHost 是用于在布局中加载目标视图的容器。使用 Gradle 添加导航依赖项。