導航

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

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

核心概念

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

概念

目的

類型

主機

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

圖表

資料結構,可定義應用程式中的所有導覽目的地,以及這些目的地如何連結。

NavGraph

遙控器

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

NavController

優點和功能

導覽元件提供許多其他好處和功能,包括:

  • 動畫與轉換:提供用於動畫和轉換的標準化資源。
  • 深層連結:實作及處理將使用者直接導向目的地的深層連結。
  • 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 架構的互動方式,請參閱下列指南:

程式碼研究室

影片

範例