Bài viết này được đăng tại
freetuts.net
Bạn đang đọc: Fragment trong Android – Freetuts
, không được copy dưới mọi hình thức.
Đầu tiên hãy xem khái niệm flagment là gì đã nhé .
Tóm Tắt
I. Android Fragments là gì?
Fragment là phần module của phong cách thiết kế hoạt động giải trí ( activity ), được sử dụng để thể hiện hành vi ( activity ) của giao diện người dùng ( UI ) trong một activity. Bằng cách sử dụng những fragment, tất cả chúng ta hoàn toàn có thể tạo ra một phong cách thiết kế UI linh động, hoàn toàn có thể được kiểm soát và điều chỉnh dựa trên kích cỡ màn hình hiển thị của thiết bị như máy tính bảng, điện thoại cảm ứng mưu trí .
Ta có thể xây dựng multi-pane UI bằng cách kết hợp nhiều fragment. Fragment có riêng các phương thức callback trong vòng đời và chấp nhận các sự kiện đầu vào của chính nó.
Ngoài ra, ta cũng hoàn toàn có thể thêm hoặc xóa những fragment trong một activity trong khi activity đang chạy. Trong Android, fragment sẽ hoạt động giải trí như một activity phụ và tất cả chúng ta hoàn toàn có thể sử dụng lại nó trong nhiều activity .
Nói chung, fragment trong Android phải được đưa vào một activity do vòng đời của fragment đó sẽ luôn luôn bị tác động ảnh hưởng bởi vòng đời của activity. Trong trường hợp nếu tất cả chúng ta tạm dừng một activity thì toàn bộ những fragment tương quan đến activity đó cũng sẽ bị dừng lại .
Trong Android có thể chèn fragment vào bố cục activity bằng cách sử dụng phần tử
và chia bố cục của activity thành các fragment. Ta có thể sửa đổi giao diện của thiết kế ứng dụng khi chạy, và cũng có thể thực hiện một fragment mà không có bất kỳ giao diện người dùng (UI) nào.
Có thể chọn sử dụng hoặc không sử dụng những fragment vào activity. Nhưng nếu sử dụng, nó sẽ cải tổ tính linh động của giao diện người dùng ứng dụng, và giúp kiểm soát và điều chỉnh phong cách thiết kế ứng dụng dựa trên kích cỡ thiết bị thuận tiện hơn .
Sau đây là ví dụ về sự khác nhau khi phong cách thiết kế nhiều fragment trong một activity để hiển thị cụ thể của một mục trên thiết bị máy tính bảng, và trên thiết bị di động .
Nếu bạn quan sát ví dụ trên cho Máy tính bảng, tất cả chúng ta đã xác lập activity A có hai fragment. Fragment tiên phong là hiển thị list những mục và fragment thứ hai là hiển thị chi tiết cụ thể về mục mà tất cả chúng ta đã chọn trong fragment tiên phong .
Đối với thiết bị cầm tay kích cỡ nhỏ sẽ không có đủ khoảng trống để hiển thị cả những fragment trong một activity, vì thế activity A gồm có fragment tiên phong để hiển thị list những mục, và activity B gồm có một fragment khác để hiển thị chi tiết cụ thể của một mục được chọn trong activity A .
Ví dụ: App GMAIL được thiết kế với nhiều fragment, do đó thiết kế của nó sẽ được thay đổi dựa trên kích thước của thiết bị như máy tính bảng hoặc thiết bị di động.
Table View
Mobile View
II. Vòng đời của Android Fragment
Sau đây là hình ảnh trình diễn vòng đời của Android fragment trong khi activity đang chạy .
Sau đây là danh sách các phương thức sẽ thực hiện trong vòng đời của fragment trong Android.
phương thức | Mô tả |
---|---|
onAttach () | Được gọi khi fragment đã được liên kết với một activity. |
onCreate () | Được sử dụng để khởi tạo fragment. |
onCreteView() | Được sử dụng để tạo fragment view |
onActivityCreated () | Được gọi khi fragment và view của fragment được khởi tạo, dùng để hoàn thành nốt công đoạn khởi tạo fragment và activity |
onStart() | Được gọi để hiển thị fragment. |
onResume () | Flagment hoạt động hoàn toàn trong activity. |
onPause () | Được gọi khi fragment không còn hiển thị và người dùng đang rời khỏi fragment. |
onStop () | Được gọi để dừng fragment. |
onDestoryView () | Giao diện view fragment bị xóa sau khi thực hiện. |
onDestroy () | Được gọi khi hủy fragment. |
onDetach () | Được gọi ngay sau khi fragment bị tách ra khỏi activity. |
III. Ví dụ về Fragment trong Android
Sau đây là ví dụ về việc tạo hai fragment, hai button và hiển thị fragment tương ứng khi nhấp vào button trong ứng dụng Android .
Tạo một ứng dụng Android mới bằng cách sử dụng android studio và đặt tên là Fragment. Nếu bạn chưa biết cách tạo thì hãy xem bài Hello World Android.
Bây giờ ta cần tạo các file layout của fragment ( listitems_info.xml
, detail_info.xml
) trong đường dẫn \ res \ layout
để hiển thị các fragment đó trong layout chính. Hãy nhấp chuột phải vào folder Layout -> New -> chọn Layout resource file và đặt tên là listitems_info.xml
.
Mở file listitems_info.xml
và viết code như dưới đây:
Listitems_info.xml
Tạo một file khác tên details_info.xml
, mở nó và viết code như dưới đây
details_info.xml
Bây giờ chúng ta cần phải tạo ra các file fragment class ( ListMenuFragment.java
, DetailsFragment.java
) trong đường dẫn \ java \ com.tutlane.fragmentsexample
, bằng cách kích chuột phải vào thư mục ứng dụng -> New -> Java class và đặt tên là DetailsFragment.java
.
Tạo một file mới DetailsFragment.java
và viết mã như dưới đây.
DetailsFragment.java
package com.tutlane.fragmentsexample; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * Created by tutlane on 06-08-2017. */ public class DetailsFragment extends Fragment { TextView name,location; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.details_info, container, false); name = (TextView)view.findViewById(R.id.Name); location = (TextView)view.findViewById(R.id.Location); return view; } public void change(String uname, String ulocation){ name.setText(uname); location.setText(ulocation); } }
Nếu bạn quan sát code ở trên, chúng ta đã extends class Fragment và sử dụng LayoutInflater
để hiển thị thông tin vào fragment. Chúng ta đã tạo một phương thức change()
để thay đổi văn bản trong textview.
Tạo một file khác ListMothyFragment.java
và viết code như dưới đây
ListMenuFragment.java
package com.tutlane.fragmentsexample; import android.app.ListFragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView; /** * Created by tutlane on 06-08-2017. */ public class ListMenuFragment extends ListFragment { String[] users = new String[] { "Suresh","Rohini","Trishika","Praveen","Sateesh","Madhav" }; String[] location = new String[]{"Hyderabad","Guntur","Hyderabad","Bangalore","Vizag","Nagpur"}; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view =inflater.inflate(R.layout.listitems_info, container, false); ArrayAdapteradapter = new ArrayAdapter (getActivity(), android.R.layout.simple_list_item_1, users); setListAdapter(adapter); return view; } @Override public void onListItemClick(ListView l, View v, int position, long id) { DetailsFragment txt = (DetailsFragment)getFragmentManager().findFragmentById(R.id.fragment2); txt.change("Name: "+ users[position],"Location : "+ location[position]); getListView().setSelector(android.R.color.holo_blue_dark); } }
Trong đoạn code này ta đã extends class bằng ListFragment, và cũng tạo ra hai mảng string users, location dùng để chứa tên và vị trí. Ngoài ra cũng tạo sự kiện onListItemClick
để cập nhật tên và vị trí trong DetailsFragment dựa trên mục danh sách đã chọn.
Bây giờ chúng ta cần hiển thị các fragment của mình theo chiều ngang trong layout chính.Mở file activity_main.xml
lên và viết mã như sau:
activity_main.xml
Ta sẽ không cần sửa đổi nào cho file MainActivity.java
và AndroidMainfest.xml
.
IV. Kết quả của Ví dụ về fragment trong Android
Khi chạy ví dụ trên trong trình giả lập Android sẽ nhận được kết quả như hình bên dưới:
Đây là cách sử dụng những fragment trong activity để thiết kế xây dựng multi-pane UI, nhằm mục đích kiểm soát và điều chỉnh bố cục tổng quan ứng dụng Android dựa trên size của thiết bị như : máy tính bảng hoặc điện thoại cảm ứng mưu trí, v.v.
Source: https://final-blade.com
Category: Kiến thức Internet