導航

導覽是指允許使用者在應用程式的不同內容片段中,自由進行瀏覽、進入及退出的互動方式。

Android Jetpack 的 Navigation 元件包含 Navigation 程式庫Safe Args Gradle 外掛程式,以及協助您實作應用程式導覽的工具。導覽元件處理多種導覽用途,包括簡單的按鈕點擊,或較為複雜的應用程式列與導覽匣等模式。

核心概念

下表概略說明導覽中的三個重要概念,以及用於實作這些概念的主要類型。

概念

目的

類型

主機

包含目前導覽目的地的 UI 元素。也就是說,當使用者瀏覽應用程式時,應用程式基本上會來回切換導覽主機的目的地。

圖表

定義應用程式中所有導覽目的地及其連結方式的資料結構。

NavGraph

遙控器

用於管理目的地之間的導覽的中央協調人員。控制器提供在目的地之間瀏覽的方法、處理深層連結、管理返回堆疊等。

NavController

優點與功能

Navigation 元件提供許多其他優點和功能,包括:

  • 動畫和轉場效果:提供動畫和轉場效果的標準化資源。
  • 深層連結:實作並處理可將使用者直接導向目的地的深層連結。
  • UI 模式:只需極少的額外工作,就能支援導覽匣和底部導覽等模式。
  • 類型安全性:包含 Safe Args Gradle 外掛程式,可在目的地之間瀏覽及傳遞資料時確保類型安全。
  • ViewModel 支援:允許將 ViewModel 的範圍限定為導覽圖,以便在圖表的目的地之間共用 UI 相關資料。
  • 片段交易:完整支援及處理片段交易。
  • 備份和備份:根據預設,正確處理備份和備份動作。

設定環境

如要在專案中加入導覽支援功能,請將下列依附元件新增至應用程式的 build.gradle 檔案:

Groovy

dependencies {
  def nav_version = "2.7.7"

  // Java language implementation
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Kotlin
  implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
  implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

  // Feature module Support
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"
}

Kotlin

dependencies {
  val nav_version = "2.7.7"

  // Java language implementation
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Kotlin
  implementation("androidx.navigation:navigation-fragment-ktx:$nav_version")
  implementation("androidx.navigation:navigation-ui-ktx:$nav_version")

  // Feature module Support
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // Jetpack Compose Integration
  implementation("androidx.navigation:navigation-compose:$nav_version")
}

如要瞭解如何將其他架構元件新增至專案,請參閱「在專案中新增元件」。

後續步驟

如需更多有關 Navigation 元件的說明文件和資源,請參閱下列資源。

詳細指南

如要進一步瞭解如何實作導覽主機和 NavController,以及這兩者與 Compose 和其他 UI 架構互動的方式,請參閱下列指南:

程式碼研究室

影片

範例