特点
碎片用来将页面模块化管理,一个Activity中可以有多个碎片,碎片不可以单独使用
显示方式
1 静态显示
2 动态显示
如何创建Fragment
1 自定义类继承Fragment
2 重写onCreateView(为占位填充布局)
Fragment - Fragment 传值
1.EvectBus
步骤
Fragment 1 发送EventBus.getDefault().postSticky();
Fragment 2 注册,解绑,接受
@SubScrib(threadMode = ThreadMode.Main,sticky = true)
接受方法
代码片段
布局文件
定义数个占位布局 之后往里面添加布局文件
<FrameLayout
android:layout_above="@id/bottom"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/fragment_a"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
<FrameLayout
android:id="@+id/fragment_b"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
<FrameLayout
android:id="@+id/fragment_c"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
<FrameLayout
android:id="@+id/fragment_d"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
</FrameLayout>
自定义类继承Fragment
public class FragmentC extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_c, container, false);
return view;
}
}
主类Oncreate
fragmentA = new FragmentA();
fragmentB = new FragmentB();
fragmentC = new FragmentC();
fragmentD = new FragmentD();
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.fragment_a,fragmentA);
transaction.add(R.id.fragment_b,fragmentB);
transaction.add(R.id.fragment_c,fragmentC);
transaction.add(R.id.fragment_d,fragmentD);
transaction.commit();
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.show(fragmentA);
transaction.hide(fragmentB);
transaction.hide(fragmentC);
transaction.hide(fragmentD);
transaction.commit();
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.show(fragmentB);
transaction.hide(fragmentA);
transaction.hide(fragmentC);
transaction.hide(fragmentD);
transaction.commit();
}
});
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.show(fragmentC);
transaction.hide(fragmentA);
transaction.hide(fragmentB);
transaction.hide(fragmentD);
transaction.commit();
}
});
btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.show(fragmentD);
transaction.hide(fragmentA);
transaction.hide(fragmentB);
transaction.hide(fragmentC);
transaction.commit();
}
});