Thao tác

Điều hướng (navigation) là các tương tác cho phép người dùng di chuyển qua lại, vào và ra khỏi các phần nội dung khác nhau trong ứng dụng.

Thành phần Điều hướng (Navigation) của Android Jetpack gồm có Thư viện điều hướng, trình bổ trợ Safe Args Gradle và công cụ giúp bạn triển khai quy trình điều hướng trong ứng dụng. Thành phần Điều hướng xử lý nhiều trường hợp sử dụng điều hướng, từ nhấp nút đơn giản đến các loại hình phức tạp hơn, chẳng hạn như thanh ứng dụng và ngăn điều hướng.

Khái niệm chính

Bảng sau đây cung cấp thông tin tổng quan về các khái niệm chính trong thành phần điều hướng và các loại chính mà bạn dùng để triển khai các khái niệm đó.

Ý tưởng

Mục đích

Loại

Thành phần lưu trữ

Một phần tử trên giao diện người dùng chứa đích đến điều hướng hiện tại. Tức là khi người dùng di chuyển trong một ứng dụng, về cơ bản, ứng dụng đó sẽ hoán đổi đích đến trong và ngoài thành phần lưu trữ điều hướng đó.

Biểu đồ

Một cấu trúc dữ liệu xác định tất cả đích đến điều hướng trong ứng dụng và cách kết nối các đích đến này với nhau.

NavGraph

Trình điều khiển

Trình điều phối trung tâm để quản lý việc điều hướng giữa các đích đến. Trình điều khiển này cung cấp các phương thức để điều hướng giữa các đích đến, xử lý đường liên kết sâu, quản lý ngăn xếp lui, v.v.

NavController

Đích đến

Một nút trong biểu đồ điều hướng. Khi người dùng chuyển đến nút này, máy chủ lưu trữ sẽ hiển thị nội dung của nó.

NavDestination

Thường được tạo khi tạo biểu đồ điều hướng.

Hành trình

Xác định duy nhất một đích đến và mọi dữ liệu mà đích đến đó yêu cầu.

Bạn có thể đi theo chỉ dẫn bằng tuyến đường. Tuyến đường sẽ đưa bạn tới điểm đến.

Mọi loại dữ liệu có thể chuyển đổi tuần tự.

Lợi ích và tính năng

Thành phần Điều hướng mang lại một số lợi ích và tính năng khác như:

  • Ảnh động và hiệu ứng chuyển đổi: Cung cấp tài nguyên chuẩn hoá để tạo ảnh động và hiệu ứng chuyển đổi.
  • Đường liên kết sâu: Triển khai và xử lý các đường liên kết sâu đưa người dùng đến thẳng một đích đến.
  • Mẫu giao diện người dùng: Hỗ trợ các mẫu như ngăn điều hướng và thành phần điều hướng ở dưới cùng giúp giảm thiểu công việc cần làm.
  • An toàn về kiểu: Hỗ trợ việc truyền dữ liệu giữa các đích đến có an toàn về kiểu.
  • Hỗ trợ ViewModel: Bật tính năng xác định phạm vi ViewModel cho một biểu đồ điều hướng để chia sẻ dữ liệu liên quan đến giao diện người dùng giữa các đích đến trong biểu đồ.
  • Giao dịch mảnh (Fragment transactions): Hỗ trợ và xử lý đầy đủ các giao dịch mảnh.
  • Quay lại và di chuyển lên: Xử lý chính xác các thao tác quay lại và di chuyển lên theo mặc định.

Thiết lập môi trường

Để đưa tính năng hỗ trợ điều hướng vào dự án của bạn, hãy thêm các phần phụ thuộc sau vào tệp build.gradle trong ứng dụng:

Groovy

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21'
}
  
dependencies {
  def nav_version = "2.8.4"

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

  // Views/Fragments Integration
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Feature module support for Fragments
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

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

  // JSON serialization library, works with the Kotlin serialization plugin.
  implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3"
}

Kotlin

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.8.4"

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

  // Views/Fragments integration
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

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

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

  // JSON serialization library, works with the Kotlin serialization plugin
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}

Để biết thông tin về việc thêm các thành phần cấu trúc khác vào dự án, hãy xem nội dung Thêm các thành phần vào dự án.

Các bước tiếp theo

Để tìm hiểu thêm tài liệu và tài nguyên tham khảo liên quan đến thành phần điều hướng, hãy xem các tài nguyên sau.

Hướng dẫn chi tiết

Để biết thêm thông tin về cách triển khai thành phần lưu trữ điều hướng và NavController, cũng như thông tin cụ thể về cách các thành phần này tương tác với Compose và những khung giao diện người dùng khác, hãy xem các hướng dẫn sau:

Lớp học lập trình

Video

Mẫu