Xin xin chào chúng ta. Vào chủ thể bao gồm luôn luôn nhé, từ bây giờ bản thân sẽ lí giải các bạn thực hiện fragment vào android. Đây là một trong yếu tố tương đối đặc biệt quan trọng. Nó khá tương đương activity. Giờ bọn họ cùng tò mò nhé.

Bạn đang xem: Fragment trong android là gì

1. Fragment là gì ?... Một số định nghĩa cơ bản

Trong các áp dụng android, tại 1 thời điểm, chỉ gồm một Activity được hiển thị duy nhất bên trên màn hình. Chúng ta muốn chia màn hình hiển thị ra nhiều phần để dễ dàng áp dụng thì fragment đáp ứng nhu cầu điều đó

Fragment là một trong nguyên tố game android độc lập, được sử dụng do một activity, y như một sub-activity. Fragment có vòng đời với hình ảnh riêng. Các Fragment thông thường sẽ có một file java đi kèm với tệp tin đồ họa xml. Các fragment không tồn tại tệp tin bối cảnh xml hay được hotline là headless fragments.

Fragment sử dụng phương thức getActivity() để lấy ra Activity cha

Fragment được định nghĩa vào file xml của activity (static definition) hoặc có thể sửa thay đổi fragment Lúc đang chạy (dynamic definition)

2. Vòng đời vủa một Fragment

*
onAttach(): hàm này triển khai tạo thành tđam mê chiếu từ một fragment đến activity đang khởi tạo nó, với triển khai một trong những bước vào quá trình khởi tạo

onCreate(): thực hiện khởi sản xuất fragment

onCreateView(): triển khai chế tạo ra giao diện(view), trả về view là bối cảnh tệp tin xml tương xứng fragment. ko đề nghị tương tác với activity vào hàm này bởi vì activity chưa được khởi chế tạo ra khá đầy đủ. Không nên thực hiện hàm này cùng với những fragment không có header

onActivityCreated(): triển khai chấm dứt nốt việc khởi chế tác activity với fragment. Trong bước này chúng ta cũng 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ấp nhận chuyển động trả toàn

onPause(): fragment bị tạm dừng chuyển độ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 call quay lại, nó vẫn trở lại triển khai hàm onCreateView()

onDestroy(): bị hủy

onDetach(): bị diệt hoàn toàn

3. Static Fragment

Static Fragment là vẻ bên ngoài fragment được knhì báo (định nghĩa) thẳng trong file activity_main.xml

lấy một ví dụ ta có 2 static fragment là MyFragment1.java(fragment1.xml)MyFragment2.java(fragment2.xml) Chụ ý: những file đồ họa thường nhằm dạng LinearLayout. --> Mình cũng không ghi nhớ sản xuất sao bản thân lại ghi như thế này nữa :D. Các các bạn thông cảm)

Trong file activity_main.xml khai báo tĩnh

Thuộc tính class chỉ mang lại đường truyền cất file java tương ứng, thuộc tính layout_weight cho rằng fragment này chỉ chiếm một không gian bao nhiêu phía bên trong activity_main.xml

Chú ý: Bắt buộc phải có nằm trong tính android:id. Nếu ko sẽ gây nên lỗi.

Xem thêm: K7 Là Ai ? Thầy Giáo Ba Là Ai

Hai class MyFragment1.javaMyFragment2.java buộc phải extends FragmentVà nên ghi đè cổ phương thức onCreateView

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.fragment1, container, false); return view;

Ví dụ

MainActivity.java

package com.example.haitm.fragmentdemo;import game android.tư vấn.v7.phầm mềm.AppCompatActivity;import app android.os.Bundle;public class MainActivity extends AppCompatActivity
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); MyFragment1

package com.example.haitm.fragmentdemo;import android.os.Bundle;import apk.tư vấn.annotation.Nullable;import android.tư vấn.v4.app.Fragment;import app android.view.LayoutInflater;import apk.view.View;import app android.view.ViewGroup;public class MyFragment1 extends Fragment
Nullable Bundle savedInstanceState) super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.fragment1, container, false); return view; MyFragment2

package com.example.haitm.fragmentdemo;import apk.os.Bundle;import app android.tư vấn.annotation.Nullable;import app android.tư vấn.v4.ứng dụng.Fragment;import apk.view.LayoutInflater;import apk.view.View;import android.view.ViewGroup;public class MyFragment2 extends Fragment
Nullable Bundle savedInstanceState) super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.fragment2, container, false); return view; fragment1.xml

fragment2.xml

main_activity.xml

Kết quả

4. Dynamics Fragment

Lớp FragmentManager có thể chấp nhận được thêm, xóa, sửa chữa thay thế fragment vào layout của activity. Sử dụng cách làm getFragmentManager() hoặc getSupportFragmentManager() để đưa ra một đối tượng FragmentManager Việc sửa thay đổi yêu cầu được tiến hành vào một giao dịch thanh toán thông qua lớp FragmentTransaction Để làm như thế, thông thường, họ quan niệm một FrameLayout duy trì chỗ trong tệp tin layout, kế tiếp dùng FragmentManager nhằm ghi đtrằn một fragment vào FrameLayout giữ lại nơi đó

FragmentManager fm = getFragmentManager();// addFragmentTransaction ft_add = fm.beginTransaction();ft_add.add(R.id.your_placehodler,new YourFragment());ft_add.commit();// replaceFragmentTransaction ft_rep = fm.beginTransaction();ft_rep.replace(R.id.your_placehodler, new YourFragment());ft_rep.commit();// removeFragment fragment = fm.findFragmentById(R.id.your_placehodler);FragmentTransaction ft_remo = fm.beginTransaction();ft_remo.remove(fragment);ft_remo.commit();Ta rất có thể sử dụng cách tiến hành addToBackStack() để quay lại fragment trước kia (y như undo). lấy ví dụ, trong ví dụ bên trên ta thêm ft_rep.addToBackStack(null) vào trước ft_rep.commit(). Hệ thống vẫn đăng kí ft_rep vào vào sản phẩm đợi. Ta kích nút baông xã bên trên điện thoại, nó đã rước vào mặt hàng ngóng ra ft_rep cùng unvì lại (hiển thị lại fragment trước đó)

Thêm: Câu lệnh sau góp vấn đề gửi thân những fragment bắt mắt hơnfragmentTransaction1.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

Ví dụ:

Giống nhỏng ví dụ phần 4 mà lại chúng ta sửa lại chútMainActivity.java

package com.example.haitm.fragmentdemo;import game android.os.Bundle;import game android.support.v7.app.AppCompatActivity;import game android.view.View;import game android.widget.Button;public class MainActivity extends AppCompatActivity Button btn; apk.support.v4.tiện ích.FragmentManager fm;
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); fm = getSupportFragmentManager(); btn = (Button) findViewById(R.id.btn_add); btn.setOnClickListener(new View.OnClickListener()
Override public void onClick(View v) game android.support.v4.tiện ích.FragmentTransaction ft_add = fm.beginTransaction(); ft_add.add(R.id.frame_layout, new MyFragment1()); ft_add.commit(); ); Crúc ý: Các các bạn chăm chú knhị báo, import đúng phiên phiên bản. Bên MyFragment1.java mình sử dụng tlỗi viên android:support.v4.app thì mặt MainActivity các bạn cũng buộc phải thực hiện đúng tlỗi viện

main_activity.xml

Ví dụ này của bản thân khi kích button thì Fragment1 được tiếp tế.

kết quả:

5. Truyền dữ liệu thân các Fragment

Để truyền tài liệu thân những Fragment, ta thực hiện Bundle. Các bạn coi ví dụ sau đây.

MyFragment myFragment = new MyFragment();Bundle bundle = new Bundle();bundle.putString("url", "https://xuxu_minhanh");myFragment.setArguments(bundle);Trong tệp tin MyFagment.java, vào hàm onActivityCreated()


Override public void onActivityCreated(Bundle savedInstanceState) super.onActivityCreated(savedInstanceState); Bundle bundle = getArguments(); if (bundle != null) String liên kết = bundle.getString("url"); setText(link); liên kết github ví dụ: https://github.com/haitm11/FragmentDemoTđam mê khảo: http://www.vogella.com/tutorials/AndroidFragments/article.html

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *