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:
NavHostFragment.findNavController(Fragment)
Navigation.findNavController(Activity, @IdRes int viewId)
Navigation.findNavController(View)
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
- Thiết kế biểu đồ điều hướng: Hướng dẫn nêu chi tiết cách thêm một biểu đồ vào
NavController
chứa tất cả đích đến trong ứng dụng của bạn. - Điều hướng tới một đích đến: Hướng dẫn nêu chi tiết cách sử dụng
NavController
để di chuyển giữa các đích đến trong biểu đồ điều hướng.