一、碎片的定义
碎片:镶嵌在活动中的 UI 片段
二、碎片的生命周期
创建碎片时调用
- onAttach
- onCreate
- onCreateView
- onActivityCreate
- onStart
- onResume
摧毁碎片时调用
- onPause
- onStop
- onDestroyView
- onDestroy
- onDetach
三、静态加载碎片
1.编写碎片布局 : 新建 layout/***.xml 文件
2.编写碎片代码:
public class FirstFragment extends Fragment {//编写碎片类的实现类
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.first_fragment,container,false);//将子碎片布局加载到容器上,容器是调用name属性的布局
}
}
3.在活动布局中引用碎片
<fragment
android:id="@+id/fragment_first" //给碎片指定id方便引用
android:name="com.example.broadcast.FirstFragment"//加载该路径的布局进来
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
四、动态加载碎片
1. 创建第二个碎片布局
2.编写第二个碎片代码
3.将活动中的碎片引用改为布局
<FrameLayout //用来存放碎片的布局
android:id="@+id/framelayout" //用id来引用布局对象
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
4.在活动中编写添加碎片逻辑
public void changeFragment(Fragment fragment){
FragmentManager fragmentManager = getFragmentManager();//获取碎片管理者对象
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();//获取碎片事务对象
fragmentTransaction.add(R.id.framelayout,fragment);//加载碎片进入布局
fragmentTransaction.commit();//递交操作
}
5.添加碎片
changeFragment(new FirstFragment());//FirstFragment为编写的碎片代码
五、碎片和活动的交互
1.碎片中获取活动对象
getActivity()//获取活动对象,就可以使用活动里的代码
2.活动中获取碎片对象
fragmentManager.findFragmentById(R.layout.first_fragment);//获取碎片对象就可以使用碎片里的方法
3.碎片和碎片交互
getActivity().getFragmentManager().findFragmentById()//获取活动对象,用活动的方法来获取另一个碎片对象
六、碎片实现栈的效果
fragmentTransaction.addToBackStack(null);//在递交操作前执行该方法,null为描述栈的名称