Tìm hiểu về Fragment trong Android

Fragment là một phần của một Activity để cho phép thiết kế activity có tính mô-đun. Nó sẽ không sai nếu chúng ta nói rằng một Fragment là một loạisub-activity.

Sau đây là một số điểm quan trọng về Fragment: −

  • Fragment cũng có layout của riêng của nó, cũng có các hành vi và vòng đời riêng.
  • Chúng ta có thể thêm hoặc xóa Fragment trong một Activity trong khi Activity này đ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 đa khung.
  • Một Fragment có thể được sử dụng trong nhiều Activitiy.
  • Vòng đời của Fragment có quan hệ chặt chẽ với vòng đời của Activity đang dùng nó, nghĩa là 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.
  • Fragment được thêm vào API 11 trở lên.

Bạn có thể tạo các Fragments bằng cách kế thừa lớp Fragment và bạn có thể chèn Fragment vào layout bởi thẻ <fragment> .

Trước khi giới thiệu về Fragment, thì có một hạn chế là tại cùng một thời điểm đã cho chúng ta chỉ có thể hiển thị một Activity duy nhất trên màn hình. Vì thế chúng ta không thể chia màn hình thiết bị ra thành nhiều phần và kiểm soát các thành phần khác nhau này một cách riêng biệt. Nhưng với Fragment thì màn hình được linh hoạt hơn, xóa bỏ việc chỉ có duy nhất 1 Activity trên màn hình tại một thời điểm. Bây giờ chúng ta cũng chỉ có một Activity duy nhất nhưng Activity này có thể chứa nhiều Fragment với đầy đủ layout, event, và lifecycle.

Dưới đây là một ví dụ cụ thể về sử dụng Fragment. Thiết bị máy tính bảng với màn hình lớn thì một Activity có thể chứa 2 Fragment, còn thiết bị cầm tay với màn hình nhỏ thì có thể có 2 Activities với mỗi Activity là một Fragment.

fragment-trong-android

Vòng đời của Fragment trong Android

Fragment trong Android có vòng đời riêng của nó, tương tự như một Activity trong Android. Sơ đồ sau miêu tả ngắn gọn các giai đoạn trong vòng đời của Fragment.

Fragment

FRAGMENT LIFECYCLE

Dưới đây là danh sách các phương thức bạn có thể ghi đè trong lớp Fragment: −

  • onAttach()Sự thể hiện (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()
  • onResume()Fragment hoạt động.
  • 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 trong Android

Bạn theo các bước đơn giản sau để tạo các Fragment:

  • Đầu tiên bạn phải quyết định xem có bao nhiêu Fragment bạn muốn sử dụng trong một Activity. Ví dụ, nếu chúng ta muốn hai Fragment để xử lý các chế độ Landscape và Portrait của thiết bị.
  • Tiếp theo dựa vào số Fragment, tạo các lớp mà kế thừa từ lớp Fragment. Lớp Fragment này có các hàm callback đã đề cập ở trên. Bạn có thể ghi đè bất cứ hàm nào tùy theo yêu cầu.
  • Tương ứng với mỗi Fragment, bạn sẽ cần tạo các layout file trong XML file. Các file này có layout cho các Fragment đã định nghĩa trước đó.
  • Sửa đổi activity file để xác định vị trí hợp lý cho các Fragment theo yêu cầu.

Nguyễn Linh

Chia sẻ để cùng tiến bộ...