Nội dung chính của bài viết
Hướng dẫn toàn tập về cách sử dụng Fragment trong Android
Phần 2: Vòng đời Fragment – Fragment Lifecycle
1. Tạo Project thực hành fragment bằng Android Studio
Đầu tiên, bạn hãy download starter project, giải nén và import vào Android Studio
>>> Hướng dẫn chi tiết sử dụng Android Studio nếu bạn chưa biết
Trong mục Welcome to Android Studio, chọn Import project (Eclipse ADT, Gradle, etc.)
Sau đó tìm đến folder source code mà bạn vừa giải nén ở trên và click OK.
Bạn sẽ nhận được thông báo cập nhật Gradle plugin nếu bạn đang sử dụng phiên bản cũ của Android Studio, tiếp đến bạn chọn “Update”.
Kiểm tra lại project cho ứng dụng All the Rages, bạn sẽ thấy một số file resource như : strings.xml, activity_main.xml, drawable và layout, Đây là những file layout do Android Studio tạo sẵn, ngoài ta còn fragment class được mình tạo để các bạn sử dụng sau này.
MainActivity sẽ là class chính, từ đây chúng ta sẽ “nhồi” các fragments vào (Mỗi Activity có thể chứa rất nhiều Fragment. RageComicListFragment là fragment chứa code để hiển thị danh sách các nội dung Rage Comic.
Sau khi hoàn thành thiết lập và chạy project, bạn sẽ thấy giao diện ứng dụng hiện tại cực kỳ đơn giản.
2. Tìm hiều vòng đời Android Fragment Lifecycle
Trước khi bắt tay vào code ứng dụng, chúng ta cùng nhau tìm hiểu chút về phần lý thuyết rất quan trọng đó là vòng đời của Fragment
Cũng giống như activity, vòng đời của một fragment xảy ra khi trạng thái của nó thay đổi. Một sự kiện trong vòng đời của Fragment xảy ra khi chúng ta có thể nhìn thấy fragment đang hoạt động, hoặc là khi fragment không sử dụng được hoặc bị destroy. Và cũng giống với Activity, bạn có thể override các hàm trong vòng đời fragment như: onCreate(), onAttach(), onCreateView()… để thực hiện những tác vụ mong muốn
Dưới đây là diagram minh họa về Fragment Lifecycle một cách trực quan nhất
Khi fragment được tạo và chạy, Fragment Lifecycle sẽ chạy theo thứ tự như sau:
- onAttach(): Fragment được đính kèm vào activity. Mỗi Fragment muốn chạy được thì nó phải thuộc vào một activity nào đó.
- onCreate(): Khi một fragment mới được khởi tạo (hàm này luôn được gọi sau khi fragment được attach vào Activity)
- onCreateView(): Các bạn sẽ nhồi layout xml vào Fragment thông qua hàm này.
- onActivityCreated(): Khi activity của fragment đã xong bước khởi tạo và attach vào Activity.
- onStart(): Khi fragment hiển thị. Một fragment chỉ start sau khi Activity start và thường là nó start ngay lập tức khi Activity start xong
- onResume(): Khi fragment hiển thị và có thể tương tác
Nhưng đợi đã, vòng đời của Fragment vẫn chưa đầy đủ đâu. Dưới đây là một vài điều sẽ xảy ra.
Các sự kiện khi bạn hoặc hệ thống destroy một fragment:
- onPause(): Khi fragment không còn tương tác(Có thể vẫn hiển thị). Điều này xảy ra ngay cả khi fragment bị gỡ bỏ hoặc bị thay thế, hoặc là khi activity của fragment bị tạm dừng.
- onStop(): Khi fragment không còn hiển thị. Điều này xảy ra ngay sau khi fregmant bị gỡ bỏ hoặc thay thế, hoặc là khi activity của fragment bị tạm dừng.
- onDestroyView(): Khi các view hay resource được tạo trong onCreateView bị remove khỏi activity và destroy
- onDestroy(): Khi fragment kết thúc việc dọn dẹp.
- onDetach(): Khi fragment bị tách khỏi Activity của nó.
Bạn có thể thấy vòng đời của fragment được đan xen với vòng đời của activity. Tuy nhiên, Fragment Lifecycle có nhiều sự kiện trong vòng đời hơn so với Activity, có đôi chút phức tạp hơn đúng không. Chúng ta sẽ tìm hiểu dần trong suốt bài hướng dẫn nhé.
- Đừng bỏ lỡ: Top 5 ngôn ngữ để phát triển ứng dụng Android
3. Thư viện android support v4
Trong Android, khi sử dụng fragments, bạn có 2 lựa chọn fragment có thể thay thế nhau.
Loại đầu tiên được cung cấp bởi platform.Nhược điểm của loại này là chỉ từ Android 3.0 trở lên mới support fragment.
Loại thứ 2 là từ thư viện support v4. Bạn add thư viện này vào project như một thư viện 3rd party bình thường. Sử dụng thư viện sẽ có 2 ưu điểm :
- Một là đảm bảo ứng dụng của bạn sẽ chạy và hiển thị giống nhau trên tất cả các phiên bản Android khác nhau. Vì vậy, khi bạn sửa lỗi thì sẽ không cần quan tâm đến việc lỗi có còn tồn tại trên các phiên bản Android khác nữa không. Chỉ cần fix xong là xong 🙂
- Hai là khi Google cập nhật tính năng mới cho Android thì sau đó họ cũng sẽ update vào thư viện V4 này. Như vậy, các phiên bản Android cũ cũng sẽ được tận hưởng tính năng mới thông qua thư viện này.
Khi nào nên sử dụng thư viện android support v4?
Nếu bạn đang phát triển một ứng dụng hướng tới nhiều phiên bản Android thì bạn nên sử dụng thư viện support v4 cho Fragment ( tất nhiên, bạn cũng nên sử dụng thư viện này cho bất kỳ chức năng khác trong ứng dụng của bạn). Đây cũng chính là lời khuyên từ các chuyên gia lập trình Android hay chính từ Core Android team .
Nếu bạn muốn phát triển ứng dụng rất chuyên sâu chỉ dành cho một phiên bản Android(Ví dụ như các nhà sản xuất điện thoại, họ muốn làm ứng dụng tương thích tốt nhất cho một phiên bản Android trên một mẫu điện thoại nào đó). Đây là lúc bạn nên sử dụng thư viện từ chính platform để đảm bảo độ tương tính cao nhất.
Như vậy, mình đã giới thiệu với các bạn khá kĩ về vòng đời của Fragment trong android. Fragment Lifecycle là vấn đề rất quan trọng cho việc học lập trình android của bạn sau này. Vì vậy, nếu có chỗ nào chưa hiểu trong bài viết thì comment bên dưới nhé.
Bài viết sau mình sẽ trình bày chi tiết cách tạo và add một Fragment vào trong Activity. Từ đó sẽ xây dựng được giao diện ứng dụng sử dụng Fragment. Các bạn chờ nhé
Bình luận. Cùng nhau thảo luận nhé!