FRAGMENT TRONG ANDROID

1. Fragment là gì


Fragment trong Android

Fragment trong Android

Nhìn vào hình trên bạn có thấy điều gì khác biệt không nào. Như các bạn thấy trên hình hay ngoài thực tế thì có một số ứng dụng sẽ không chỉ có một khung hiển thị nội dung mà có nhiều khung để hiện thị nội dung khác nhau trên một màn hình với những tác vụ của mỗi màn hình là khác nhau. Như hình trên cái mấy tình bảng ta thấy có hai khung hiển thị là một khung chứa danh sách Item và một khung hiển thị chi tiết của các Item đươc chọn(tôi đoán thế =))) ) vậy là trên một màn hình hay một Activity sẽ chứ hai Fragnent là A và B. Fragment A và B sẽ có những nhiệm vụ khác nhau và sẽ cùng hiển thị và chạy trên một màn hình vì vậy có thể nói Fragment là Sub Activity. Các Fragment đều có file Java và file giao diện XML riêng như Activity và các Fragment không có file Java thì sẽ được gọi là headless fragments.

2. Vòng đời của Fragment


Như tôi đã nói ở trên Fragment có thể coi là một Activity con nên nó cũng có một số tính chất của Activity và cũng như Activity nó cũng có vòng đời của nó và sơ đồ dưới đây chính là sơ đồ vòng đời của Fragment.

Vòng đời của Fragment

Vòng đời của Fragment

Như các bạn thấy nó cũng có các hàm giống với Activity đúng không nào. Tôi xin nói sơ qua về chức năng của các hàm:

onAttach(): hàm này thực hiện tạo tham chiếu từ một fragment đến activity đã khởi tạo nó, và thực hiện một số bước trong quá trình khởi tạo.

onCreate(): thực hiện khởi tạo fragment.

onCreateView(): thực hiện tạo giao diện(view), trả về view là giao diện file xml tương ứng fragment. ko nên tương tác với activity trong hàm này bởi vì activity chưa được khởi tạo đầy đủ. Không cần thực hiện hàm này với các fragment không có header.

onActivityCreated(): thực hiện hoàn thành nốt việc khởi tạo activity và fragment. Trong bước này chúng ta có thể gọi findViewById().

onStart(): thực hiện việc hiển thị fragment lên màn hình.

onResume(): fragment chính thức hoạt động hoàn toàn.

onPause(): fragment bị tạm dừng hoạt động, nó vẫn có thể được nhìn thấy.

onStop(): fragment bị ẩn.

onDestroyView(): giao diện(view) của fragment bị hủy. Nếu nó được gọi quay lại, nó sẽ quay trở lại thực hiện hàm onCreateView().

onDestroy(): bị hủy.

onDetach(): bị hủy hoàn toàn.

3. Cách sử dụng Fragment

Fragment có hai loại chính là Frament tĩnh và Fragment động

A. Fragment tĩnh.

Static Fragment là kiểu fragment được khai báo (định nghĩa) trực tiếp trong file XML của Activity.

Ví dụ ta có 2 static fragment là MyFragment1.java(fragment1.xml) và MyFragment2.java(fragment2.xml) .

Trong file activity_main.xml ta sẽ khai báo thành phần Fragment như sau:

Lưu ý: Thuộc tính class chỉ đến file Java tương ứng. Bắt buộc phải có thuộc tính android:id. Nếu không sẽ gây lỗi.

Trong hai class MyFragment1.java và MyFragment2.java phải kế thừa(extends ) lớp Fragment.

File MyFragment1

File MyFragment2

File MainActivity

File Fragment1.xml

File Fragment2.xml

File main_activity.xml

Kết quả

Kết quả khi chạy

Kết quả khi chạy

B. Fragment động

  • Lớp FragmentManager cho phép thêm, xóa, thay thế fragment trong layout của activity. Sử dụng phương thức getFragmentManager() hoặc getSupportFragmentManager() để lấy ra một đối tượng FragmentManager
  • Việc sửa đổi phải được thực hiện trong một giao dịch thông qua lớp FragmentTransaction
  • Để làm như thế, thông thường, chúng ta định nghĩa một FrameLayout giữ chỗ trong file layout, sau đó dùng FragmentManager để ghi đè một fragment vào FrameLayout giữ chỗ đó

 

Chú ý: Ta có thể sử dụng phương thức addToBackStack() để quay lại fragment trước đó (giống như undo).

File MainActivity.java

File main_activity.xml

Kết quả khi nhấn nút Add button thì Fragment1 sẽ được thêm vào.

Kết quả Fragment động

Kết quả Fragment độngKết quả Fragment động

Như vậy tôi đã giới thiệu với các bạn về Fragment cũng như các sử dụng Fragment trong Android. Cảm ơn các bạn đã theo dõi và hẹn gặp lại các bạn ở các bài tiếp theo.

4. Tổng kết


 

Bài viết khác

Hồ Diên Lợi
Đến với CNTT là tình cờ, tuy nhiên khi đã tham gia rồi thì mới biết đây chính là đam mê, hy vọng dịch bệnh Covid-19 sẽ qua, để chia sẽ đam mê công nghệ đến nhiều người hơn!

DANH SÁCH BÀI HỌC