Tập tành học làm Android (P4) – Fragment

Tram Ho

Trong bài viết lần này mình cùng các bạn tìm hiểu về một thành phần cũng rất hay trong android đó là fragment. Trong bài viết mình có sử dụng ngôn ngữ Kotlin và các kiến thức trong các bài viết trước của mình để làm ví dụ về fragment các bạn có thể xem các kiến thức cơ bản về Kotlin và các bài viết trước của mình

Giới thiệu

  • Fragment là một phần giao diện người dùng hoặc hành vi của một ứng dụng. Nó có thể đặt ở bên trong activity, và thiết kế activity với nhiều module. Nó được coi như là sub-activity (activity con)
  • Fragment cũng có vòng đời riêng của nó.
  • Có thể thêm, xóa, thay đổi fragment trong activity khi activity vẫn đang chạy.
  • Có thể kết hợp nhiều Fragment trong một Activity để xây dựng giao diện người dùng multi-pane.
  • Một Fragment có thể được sử dụng trong nhiều Activities.
  • Vòng đời của Fragment có quan hệ chặt chẽ với vòng đời của Activity đang dùng, khi Activity bị tạm dừng thì các Fragment sẽ dừng lại.
  • Fragment có thể thực hiện một hành vi mà không có trong thành phần giao diện người dùng.
  • Bạn có thể tạo các Fragments bằng cách kế thừa lớp Fragment và Fragment được thêm vào layout bởi thẻ <fragment>

Vòng đời fragment

  • onAttach(): instance của Fragment được gắn kết với một sự thể hiện của activity. Fragment và Activity không hoàn toàn được khởi tạo. Đặc biệt khi bạn lấy trong phương thức này một tham chiếu tới activity mà sử dụng Fragment cho công việc khởi tạo xa hơn.
  • onCreate(): Hệ thống gọi phương thức này khi tạo Fragment. Bạn nên khởi tạo các thành phần cơ bản của Fragment mà bạn muốn duy trì khi Fragment bị dừng hoặc tạm dừng, sau đó được phục hồi lại.
  • onCreateView(): Hệ thống gọi phương này khi cần Fragment đó để vẽ giao diện UI lần đầu tiên. Để vẽ một UI cho Fragment của bạn, bạn phải trả về một thành phần View từ phương thức này. Đó là root của layout. Bạn có thể trả về null nếu Fragment không cung cấp một giao diện UI.
  • onActivityCreated(): Được gọi sau phương thức onCreateView() khi host activity được tạo. Sự thể hiện của Activity và Fragment đã được tạo cùng với cấu trúc view của activity đó. Tại điểm này, View có thể được truy cập với phương thức findViewById(). Ví dụ, trong phương thức này bạn có thể khởi tạo các đối tượng mà cần một đối tượng Context.
  • onStart(): Được gọi khi Fragment hiển thị cho người dùng
  • onResume(): kết nối lại tương tác của người dùng với fragment
  • onPause(): Hệ thống gọi phương thức này khi có dấu hiệu chỉ rằng người dùng đang rời khỏi Fragment này.
  • onStop(): Fragment đang bị dừng bằng cách gọi phương thức này.
  • onDestroyView(): Fragment view sẽ hủy sau khi gọi phương thức này.
  • onDestroy(): Được gọi để xóa trạng thái của Fragment.

Cách sử dụng fragment

Đây là giao diện mình sẽ làm ví dụ về fragment trong bài viết này.

Tách fragment

Trong giao diện này các bạn có thể thấy có 2 phần là phần nhập dữ liệu và một button, phần còn lại phía dưới là phần hiển thị text sau khi chúng ta click vào button ở phần trên nên chúng ta sẽ tách giao diện này thành 2 phần là TopFragmentBottomFragment

Thiết kế giao diện cho fragment

Top Fragment

  • Trong thực mục res/layout chúng ta tạo mới layout resource file với tên là activity_top, ở đây mình sẽ sử dụng constraintlayout để dựng giao diện cho layout này
  • Nội dung file activity_top.xml sẽ như sau:

Và đây là giao diện của nó:

  • Sau đó trong thư mục java/com.example.myapplication.ui.main chúng ta tạo thư mục fragment để chứa các class xử lý fragment của chúng ta. Trong thư mục này chúng ta tạo Kotlin classTopFragment
    Nội dung file này sẽ như sau:

Bottom Fragment

  • Tương tự như Top fragment thì chúng ta sẽ tạo layout fragment trong res/layout với tên làactivity_bottom
    Nội dung file sẽ như sau:

Giao diện sẽ như sau:

Sau đó trong thư mục java/com.example.myapplication.ui.main chúng ta tạo thư mục fragment để chứa các class xử lý fragment của chúng ta. Trong thư mục này chúng ta tạo Kotlin classBottomFragment
Nội dung file này sẽ như sau:

Trong file này chúng ta có hai function:

  • onCreateView: hàm này chúng ta return về 1 view để tạo giao diện cho fragment, và find full name theo id
  • showText: hàm này set nội dung cho fullname

Main activity

  • Chúng ta sửa lại file giao diện layout main activity như sau:
    Nội dung file main_activity như sau:

  • Sau đó chúng ta sửa lại file MainActivity như sau:

Trong file này chúng ta có hai function:

  • onCreate: để tạo activity, set view là file layout main_activity mà chúng ta đã tạo
  • showText: trong function này chúng ta get Bottom Fragment sau đó truyền các parameter vào function showText mà đã được khởi tạo ở class BottomFragment
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo