Ví dụ đơn giản để bạn hiểu về Fragment trong Android
Bài đăng này đã không được cập nhật trong 10 năm
Trong bài viết lần này, mình sẽ tóm tắt các luồng cơ bản giúp các bạn hiểu được cách để implement chức năng Fragment trong Android. Mình sẽ không nêu ra những điểm chi tiết hơn như truyền đối số mà chỉ tập trung vào luồng và tư tưởng trong Fragment. Các bạn có thể tham khảo chi tiết hơn thông qua source code ở bên dưới.
Giới thiệu qua về luồng màn hình:
- với màn hình nhỏ:
- Khi người dùng bật màn hình lên, sẽ có 2 phương án chọn giữa Article One hay Article Two.
- Sau khi người dùng chọn 1 loại article, màn hình sẽ thay đổi và hiển thị nội dung của article tương ứng.
- với màn hình to:
- Khi người dùng bật màn hình lên, 2 phương án article one và article two sẽ nằm ở góc bên trái màn hình.
- Sau khi người dùng chọn 1 loại article, nội dung article tương ứng sẽ hiển thị ngay bên cạnh và không có sự di chuyển màn hình.
Source code: https://github.com/hoangcongminh901/Fragment_basics
- Đầu tiên ta bắt đầu quan sát file MainActivity(https://goo.gl/ByyptE)
- Từ hàm onCreate:
- 
- Thực hiện cài đặt Layout cho activity bằng setContentView. Tại đây tuỳ vào kích thước của màn hình dể load file layout khác nhau (LinearLayoutchứa 2 fragment với màn hình to hay chỉ cóFrameLayoutvới màn hình nhỏ).
 
- Thực hiện cài đặt Layout cho activity bằng 
- 
- Nếu layout được chọn là FrameLayoutsẽ tiến hành việc tạoFragmentcho màn hình đó bằng:
 
- Nếu layout được chọn là 
HeadlinesFragment firstFragment = new HeadlinesFragment();
- 
- Rồi sau đó tiến hành gắn fragment mới tạo ra này vào trong layout bằng cách:
 
getSupportFragmentManager().beginTransaction()
					.add(R.id.fragment_container, firstFragment).commit();
- Tiếp theo hãy quan sát file large/news_articles.xml(https://goo.gl/6vNdN5) để hiểu tại sao không có công đoạn gắn fragment vào layout như với màn hình nhỏ.
- Ta thấy có 2 thẻ fragment đã được khai báo trong LinearLayout. 1 fragment chỉ đến class HeadlinesFragmentvà 1 fragment khác chỉ đến classArticleFragment.
- Khi thông báo trong này đồng nghĩa với việc Android sẽ tự động chạy hàm khởi tạo view giúp chúng ta.
- Bây giờ hãy cùng quan sát để hiểu hoạt động khi click vào một article mình muốn xem nội dung tại HeadlinesFragment(https://goo.gl/DPGdKN)
- Thông qua việc tạo OnHeadlineSelectedListernerinterface, ta có thể buộc Activity implements interface này phải tạo functiononArticleSelectednhằm giúp truyền thông tin từFragmentlên tớiActivitychứa nó (trong trường hợp này làMainActivity).
- Ta cấu trúc fragment này theo dạng list, với mỗi item trong list sẽ là tên của một article.
- HeadlinesFragmentkế thừa- ListFragmentgiúp nó có các function như nhận biết sự kiện click của người dùng vào 1 điểm trong list.
- Bằng cách dùng setListAdapterta có thể gắn giá trị vào từng item tương ứng (trong trường hợp này là text gắn vàoTextViewtương ứng). DoIpsum.Headlineslà 1 array có 2 giá trị, ta sẽ tạo được 2 item trong 1 list.
- Khi người dùng chọn 1 item trong list thuộc fragment này, nó sẽ gọi tới method onListItemClickta đã override. Tại đây, thông qua việc gọi hàmonArticleSelectedđã được viết tạiMainActivity, ta truyền được giá trị vị trí item đã được chọn lên Activity để thực hiện xử lý hiển thị ra nội dung Article đó.
- Quay lại với file MainActivity(https://goo.gl/ByyptE) hàmonArticleSelected
- Tại đây có chia 2 trường hợp, với màn hình nhỏ và màn hình lớn.
- Màn hình nhỏ:
- 
- Sẽ tiến hành việc tạo Fragmenthiển thị nội dung article đã chọn cho màn hình đó bằng:
 
- Sẽ tiến hành việc tạo 
ArticleFragment newFragment = new ArticleFragment();
Sau đó ta sẽ gán giá trị để fragment được tạo ra sẽ có giá trị thích hợp bằng:
Bundle args = new Bundle();
args.putInt(ArticleFragment.ARG_POSITION, position);
newFragment.setArguments(args);
- 
- Fragment này sau đó được thay thế với fragment đã được tạo ra bằng việc sử dụng
 
transaction.replace(R.id.fragment_container, newFragment);
- Màn hình lớn:
- 
- Sử dụng updateArticleViewmethod để hiển thị thông tin article đã chọn tại fragment bên phải màn hình.
 
- Sử dụng 
- Cuối cùng ta đến với ArticleFragment(https://goo.gl/GJ9vv3) để xem quá trình thay đổi thông tin trên fragment ra sao:
- Quan sát method updateArticleView
- 
- Có thông số positionđược truyền vào để xác định người dùng đã ấn vào article nào
 
- Có thông số 
- 
- Tại đây ta tạo 1 TextViewrồi gán giá trị text vào cho nó, kết thúc việc hiển thị nội dung article tương ứng trênArticleFragment.
 
- Tại đây ta tạo 1 
Lời kết
Bài viết với mục tiêu hướng dẫn đơn giản cách implement Fragment trong Android. Hy vọng nó sẽ giúp ích được cho các newbie yêu thích ngôn ngữ Android.
All rights reserved
 
  
 