Sử dụng thành phần kiến trúc Navigation trong Jetpack Android (Kotlin)

Tram Ho

1. Giới thiệu

Android Jetpack là một tập hợp các components, tools giúp bạn nhanh chóng tạo ra các ứng dụng Android.
Các components này kết hợp giữa Support Library và Architecture Components.

Có thể phân loại Android Jetpack thành 4 thành phần chính :

  • Foumdation (Ví dụ: ktx, appcompat, multidex, test)
  • Architecture (Ví dụ: Data Binding, Lifecycles, ViewModel, Livedata, Room, Paging, Navigation, WorkManager)
  • Behavior (Ví dụ: Download manager, Media, Notifications, Permissions, Sharing, Slices)
  • UI (Ví dụ: Animations, Auto, Emoji, Fragment, Layout, Palette, TV, Wear OS )

Các thành phần của Android Jetpack.

Trong bài viết này, chúng ta sẽ tìm hiểu về Navigation.

Navigation đề cập đến các tương tác cho phép người dùng điều hướng qua, vào và thoát ra khỏi các phần nội dung khác nhau trong ứng dụng của bạn.

Navigation trong Android Jetpack giúp bạn triển khai việc điều hướng, từ việc click vào Button đơn giản cho đến các thành phần điều hướng phức tạp hơn như app bar và navigation drawer.

Thành phần Navigation cũng đảm bảo trải nghiệm người dùng nhất quán và có thể dự đoán được bằng cách tuân thủ các nguyên tắc đã được thiết lập.

Thành phần Navigation bao gồm ba phần chính được mô tả dưới đây:

  • Navigation graph:
    File XML chứa tất cả thông tin liên quan đến điều hướng trong một vị trí tập trung.
    Nó bao gồm tất cả các khu vực nội dung riêng lẻ trong ứng dụng của bạn, được gọi là destinations (đích đến), cũng như các đường dẫn mà người dùng có thể đi thông qua ứng dụng của bạn.

  • Navhost:
    Một khung chứa rỗng hiển thị các đích đến từ navigation graph của bạn. Navigation bao gồm một khai báo Navhost mặc định, NavhostFragment, hiển thị các Fragment đích đến .

  • NavController:
    Một đối tượng quản lý điều hướng ứng dụng trong Navhost. NavControll phối hợp hoán đổi nội dung đích đến trong Navhost khi người dùng di chuyển trong ứng dụng của bạn.

2. Thiết lập

Bạn cần có Android Studio 3.2 RC trở lên để sử dụng Android Jetpack bao gồm Navigation.
Ngoài ra, với phạm vi của bài viết này, kiến thức về Kotlin là bắt buộc.

Bước 1 :
Tạo mới Android project, thêm blank activity.

Bước 2:
Thêm các dependencies sau vào file app/build.gradle và sync project :

Thêm vào đó, để hỗ trợ việc truyền các giá trị giữa các view trong một navigation, chúng ta cần sử dụng thêm plugin typesafe.

Thêm navigation-safe-args-gradle-plugin vào file build.gradle của project như sau :

Trong app/build.gradle , chúng ta sẽ thêm plugin như sau :

Bước 3:

Để implement Navigation, Android giới thiệu một kiểu resource mới gọi là Navigation.
Click chuột phải vào res => New => Android resource file.
Chọn title và chọn Navigation

File navigation sau khi tạo xong sẽ như sau :

Bước 4:
Nếu ko tạo được Navigation, bạn hãy chọn Enable Navigation Editor

Bước 5:

Trong navigation graph xml file, tìm đến Design và click vào icon New Destination như sau :

Chúng ta sẽ tạo 2 fragment bằng cách click vào Create Blank Destination.
Tạo MainFragmentDestinationFragment
Khi tạo xong 2 fragment, file navigation xml sẽ như sau :

Design view sẽ hiển thị như sau :

3. Thêm Action

Để framework hiểu được đích đến cần đến từ nguồn nào, bạn phải chỉ định một action.
Bạn phải thêm action tag bên trong source/home fragment

4. Thêm Arguments

Ví dụ, bạn sẽ truyền một giá trị “name” từ MainFragment vào DestinationFragment, sau đó bạn sẽ hiển thị “Welcome $name”.
Bạn có thể truyền nhiều tham số như vậy.

Trong file navigation xml, thêm thẻ <argument/> vào destination fragment.

  1. android:name – Id của tham số.
  2. app:argType – Kiểu dữ liệu là gì. Hiện tại đang support inferred, integer, string, reference
  3. android:defaultValue ( tùy chọn) – Giá trị mặc định mà fragment nhận được trong trường hợp ko source fragment ko truyền vào giá trị nào.

Hoàn tất, file navigation XML sẽ như sau :

**welcome_nav_graph.xml **

5. Tạo XML layout

fragment_main.xml

**fragment_destination.xml **

activity_main.xml

6. Coding

1. MainActivity

MainActivity.kt

2. MainFragment

MainFragment.kt

3. DestinationFragment

DestinationFragment.kt

7. Kết luận

Chạy app và chúng ta sẽ có kết quả như sau :

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo