CĂN BẢN
INTENTS
GIAO DIỆN
CÁC KHÁI NIỆM
VÍ DỤ
TÀI LIỆU
HỌC LẬP TRÌNH ANDROID
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Fragments trong Android

Fragments là một thành phần rất quan trọng trong Android, được sử dụng để xây dựng giao diện người dùng linh hoạt và dễ dàng quản lý. Trong bài viết này, chúng ta sẽ tìm hiểu về khái niệm, vai trò, các thuộc tính, cách sử dụng và đưa ra ví dụ minh họa về Fragments trong Android.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Giới thiệu Fragments trong Android

Fragments là một phần của giao diện người dùng trong Android. Nó cho phép chia một màn hình lớn thành nhiều phần nhỏ hơn, mỗi phần chứa một nội dung riêng biệt. Fragments giúp tạo ra một giao diện người dùng linh hoạt và tăng tính tương thích với các thiết bị khác nhau. Fragments có thể được sử dụng để hiển thị một danh sách, một bản đồ, một biểu đồ hoặc bất kỳ nội dung nào khác.

Fragments có vai trò rất quan trọng trong việc tạo ra giao diện người dùng tốt hơn và dễ dàng quản lý hơn trong Android. Các lợi ích của Fragments bao gồm:

  • Tăng tính tương thích: Fragments cho phép tạo ra giao diện người dùng linh hoạt và tương thích với các thiết bị khác nhau.
  • Dễ dàng quản lý: Fragments giúp quản lý các phần khác nhau trong giao diện người dùng một cách dễ dàng hơn.
  • Tái sử dụng: Fragments có thể được sử dụng lại trong các giao diện người dùng khác nhau.
  • Tính năng tùy chỉnh: Fragments có thể được tùy chỉnh để hiển thị nội dung mong muốn của bạn.

2. Fragments lifecycle trong Android

Android fragment lifecycle giống như activity lifecycle. Có 12 methods vòng đời cho fragment: fragmentlifecycle png

Bài viết này được đăng tại [free tuts .net]

Các methods có trong fragment lifecycle:

  • onAttach(Activity): chỉ được gọi một lần khi được gắn với activity.
  • onCreate(Bundle): Nó được sử dụng để khởi tạo fragment.
  • onCreateView(LayoutInflater, ViewGroup, Bundle): Tạo và trả về chế độ xem phân cấp.
  • onActivityCreated(Bundle): được gọi sau khi hoàn thành phương thức onCreate().
  • onViewStateRestored(Bundle): cung cấp thông tin cho fragment rằng tất cả trạng thái đã lưu của chế độ xem phân cấp đã được khôi phục.
  • onStart(): làm fragment có thể nhìn thấy được.
  • onResume(): làm cho fragment có thể tương tác.
  • onPause(): được gọi khi fragment không còn tương tác.
  • onStop(): được gọi khi fragment không còn hoạt động nữa.
  • onDestroyView(): cho phép fragment dọn sạch tài nguyên.
  • onDestroy(): cho phép fragment thực hiện dọn dẹp lần cuối fragment state.
  • onDetach(): được gọi ngay trước khi fragment không còn được liên kết với activity của nó.

3. Cách sử dụng Fragments trong Android

Để sử dụng fragment trong Android, bạn cần thực hiện các bước sau:

Bước 1: Tạo file XML cho fragment của bạn. File XML này chứa các phần tử UI mà bạn muốn hiển thị trong fragment.

Ví dụ, bạn muốn tạo một fragment hiển thị danh sách các item, thì bạn có thể tạo file XML như sau:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

Bước 2: Tạo một class kế thừa từ lớp Fragment. Lớp này sẽ chứa các phương thức để hiển thị fragment.

Ví dụ, bạn muốn tạo một class Fragment để hiển thị danh sách các item, thì bạn có thể tạo class như sau:

public class ItemListFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_item_list, container, false);
        ListView listView = (ListView) view.findViewById(R.id.list_view);
        // Set up adapter for list view
        return view;
    }
}

Bước 3: Sử dụng FragmentManager để thêm fragment vào activity của bạn.
Ví dụ, nếu bạn muốn thêm fragment vào activity với id là R.id.fragment_container, thì bạn có thể sử dụng FragmentManager như sau:

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ItemListFragment fragment = new ItemListFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();

Với các ví dụ trên, bạn đã tạo và thêm một fragment vào activity của mình. Bạn có thể tùy chỉnh nội dung của fragment bằng cách chỉnh sửa file XML và class của nó.

Bây giờ hãy cùng tìm hiểu một số tính năng quan trọng khác của fragment nhé.

4. Một số chức năng quan trọng của fragment trong Android

a. Truyền dữ liệu vào fragment

Bạn có thể truyền dữ liệu vào fragment thông qua Bundle. Trong class của fragment, bạn có thể tạo một phương thức để thiết lập các đối số cho Bundle, sau đó gán Bundle này vào fragment thông qua phương thức setArguments.

Ví dụ:

public class ItemListFragment extends Fragment {

    public static ItemListFragment newInstance(String param1, String param2) {
        ItemListFragment fragment = new ItemListFragment();
        Bundle args = new Bundle();
        args.putString("param1", param1);
        args.putString("param2", param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_item_list, container, false);
        // Get arguments from bundle
        return view;
    }
}

Khi khởi tạo fragment, bạn có thể sử dụng phương thức newInstance() để thiết lập các đối số cho Bundle và truyền vào fragment.

ItemListFragment fragment = ItemListFragment.newInstance("param1", "param2");

b. Tương tác giữa các fragment

Khi sử dụng nhiều fragment trong một activity, bạn có thể muốn các fragment có thể tương tác với nhau. Trong class của activity, bạn có thể tạo một phương thức để truy cập vào các fragment và gọi các phương thức của chúng.

Ví dụ:

public class MainActivity extends AppCompatActivity {

    private ItemListFragment itemListFragment;
    private ItemDetailFragment itemDetailFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentManager fragmentManager = getSupportFragmentManager();
        itemListFragment = (ItemListFragment) fragmentManager.findFragmentById(R.id.item_list_fragment);
        itemDetailFragment = (ItemDetailFragment) fragmentManager.findFragmentById(R.id.item_detail_fragment);
    }

    public void onItemSelected(Item item) {
        itemDetailFragment.showItemDetail(item);
    }
}

Trong ví dụ trên, phương thức onItemSelected được gọi khi một item được chọn trong ItemListFragment. Phương thức này gọi phương thức showItemDetail của ItemDetailFragment để hiển thị chi tiết của item đó.

c. Quản lý trạng thái của fragment

Khi xoay màn hình hoặc thay đổi cấu hình khác của thiết bị, trạng thái của fragment có thể bị mất đi. Để quản lý trạng thái của fragment, bạn có thể ghi đè phương thức onSaveInstanceState và khôi phục trạng thái trong phương thức onCreateView.

Ví dụ:

public class ItemListFragment extends Fragment {

    private ArrayList<Item> itemList;

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putParcelableArrayList("itemList", itemList);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_item_list, container, false);
    if (savedInstanceState != null) {
        itemList = savedInstanceState.getParcelableArrayList("itemList");
    }

    // Initialize itemList if it hasn't been initialized yet
    if (itemList == null) {
        itemList = new ArrayList<>();
        // Load items from database or network
    }

    // Display itemList in a RecyclerView or ListView
    return view;
}
}


Trong ví dụ trên, danh sách các mục được lưu trữ trong itemList. Khi onSaveInstanceState được gọi, danh sách này được lưu vào Bundle để có thể khôi phục sau này. Trong onCreateView, trạng thái được khôi phục từ Bundle (nếu có) và hiển thị danh sách trong một RecyclerView hoặc ListView.

d. Sử dụng Fragment trong ViewPager

ViewPager là một thành phần của Android hỗ trợ chuyển đổi giữa các fragment thông qua việc vuốt sang trái hoặc phải trên màn hình. Để sử dụng fragment trong ViewPager, bạn cần tạo một adapter để cung cấp fragment cho ViewPager.

Ví dụ:

public class MyPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList;

public MyPagerAdapter(FragmentManager fragmentManager, List<Fragment> fragmentList) {
    super(fragmentManager);
    this.fragmentList = fragmentList;
}

@Override
public Fragment getItem(int position) {
    return fragmentList.get(position);
}

@Override
public int getCount() {
    return fragmentList.size();
}
}


Trong ví dụ trên, MyPagerAdapter là một adapter cho ViewPager, chứa một danh sách các fragment. Phương thức getItem trả về fragment tại vị trí được chỉ định trong danh sách, và phương thức getCount trả về số lượng fragment trong danh sách.

Để sử dụng MyPagerAdapter trong ViewPager, bạn có thể sử dụng code sau đây:

ViewPager viewPager = findViewById(R.id.view_pager);
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), fragmentList);
viewPager.setAdapter(adapter);


Trong đó fragmentList là một danh sách các fragment mà bạn muốn hiển thị trong ViewPager.

Trên đây là một số ví dụ cụ thể về cách sử dụng Fragment trong Android. Hy vọng nó sẽ giúp bạn hiểu rõ hơn về cách sử dụng và áp dụng Fragment trong các ứng dụng Android của bạn.

4. Tổng kết

Fragment là một thành phần quan trọng của Android, cho phép phân chia giao diện người dùng thành các phần độc lập để quản lý dễ dàng hơn. Freetuts đã trình bày cho các bạn fragment lifecycle, cách sử dụng fragment và các tính năng quan trọng của fragment. Hy vọng bài viết này sẽ giúp bạn hiểu rõ hơn về Fragments và sử dụng chúng trong ứng dụng của mình.

Cùng chuyên mục:

Tìm hiểu về vòng đời của Activity trong Android

Tìm hiểu về vòng đời của Activity trong Android

AlarmManager trong Android

AlarmManager trong Android

Menu trong Android

Menu trong Android

SearchView trong Android

SearchView trong Android

TabLayout trong Android

TabLayout trong Android

ViewStub trong Android

ViewStub trong Android

Image Slider trong Android

Image Slider trong Android

Trình chuyển đổi hình ảnh (Image Switcher) trong Android

Trình chuyển đổi hình ảnh (Image Switcher) trong Android

ScrollView trong Android

ScrollView trong Android

ProgressBar trong Android

ProgressBar trong Android

Đồng hồ Analog và đồng hồ kỹ thuật số trong Android

Đồng hồ Analog và đồng hồ kỹ thuật số trong Android

Cách dùng TimePicker trong Android

Cách dùng TimePicker trong Android

Cách dùng DatePicker trong Android

Cách dùng DatePicker trong Android

Cách dùng SeekBar trong Android

Cách dùng SeekBar trong Android

Cách dùng WebView trong Android

Cách dùng WebView trong Android

Cách dùng RatingBar trong Android

Cách dùng RatingBar trong Android

Cách dùng ListView trong Android

Cách dùng ListView trong Android

AutoCompleteTextView trong Android

AutoCompleteTextView trong Android

Spinner trong Android

Spinner trong Android

AlertDialog trong Android

AlertDialog trong Android

Top