Tạo bộ điều khiển hoạt động điều hướng

Bộ điều khiển hoạt động điều hướng là một trong những khái niệm chính trong tính năng điều hướng. Nó giữ biểu đồ điều hướng và hiển thị các phương thức cho phép ứng dụng của bạn di chuyển giữa các đích đến trong biểu đồ.

Khi sử dụng thành phần Điều hướng, bạn sẽ tạo một bộ điều khiển hoạt động điều hướng bằng cách sử dụng lớp NavController. NavController là API điều hướng trung tâm. API này theo dõi các đích đến mà người dùng đã truy cập và cho phép người dùng di chuyển giữa các đích đến. Hướng dẫn này minh hoạ cách tạo NavController trong ứng dụng của bạn.

Để biết thông tin về cách thêm một biểu đồ điều hướng vào NavController, hãy xem bài viết Thiết kế biểu đồ điều hướng. NavController cung cấp một vài cách để điều hướng đến các đích đến trong biểu đồ của nó. Để biết thêm thông tin, hãy xem bài viết Di chuyển tới một đích đến.

Compose

Để tạo NavController khi dùng Jetpack Compose, hãy gọi rememberNavController():

val navController = rememberNavController()

Bạn nên tạo NavController ở vị trí cao trong hệ phân cấp thành phần kết hợp. Lớp này cần phải ở vị trí đủ cao để tất cả thành phần kết hợp cần tham chiếu đến lớp này đều có thể làm như vậy.

Khi làm vậy, bạn sẽ có thể dùng NavController làm nguồn đáng tin cậy duy nhất để cập nhật các thành phần kết hợp bên ngoài màn hình. Điều này tuân theo các nguyên tắc chuyển trạng thái lên trên (state hoisting).

Khung hiển thị

Nếu đang dùng khung giao diện người dùng của Khung hiển thị, bạn có thể truy xuất NavController bằng một trong nhiều phương thức, tuỳ thuộc vào ngữ cảnh.

Kotlin:

Java:

Thông thường, trước tiên, bạn sẽ nhận được một NavHostFragment rồi truy xuất NavController qua mảnh đó. Sau đây là đoạn mã minh hoạ:

Kotlin

val navHostFragment =
    supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController

Java

NavHostFragment navHostFragment =
    (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();

Tài liệu đọc thêm