📅  最后修改于: 2023-12-03 15:02:07.850000             🧑  作者: Mango
Jetpack Navigation 组件是 Android Jetpack 中的一个可用于轻松实现应用内导航的组件。它由多个部分组成,其中关键部分是 Navigation Graph 和 NavHost。
Navigation Graph 是一个 XML 文件,用于定义应用程序导航的所有可能路径。此文件描述了整个应用程序中的所有目标,以及它们之间的关系。
Navigation Graph 包含以下几个主要部分:
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 必须显示在布局文件中,并且必须与 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 添加导航依赖项。