概述
Android3.0开始引入这个新特性。主要用于实现一个多任务的界面。
fragement是activity的子界面,是运行在activity里面的。
继承fragment 要求最低版本是11 也就是3.0 fragment刚开始是为平板准备的,现在用的也越来越多
布局控件 使用帧布局
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fl_container">
</FrameLayout>
public class Fragment01 extends Fragment {
/**
* 初始化fragment的界面 加载fragment的布局文件,显示出来
* inflater 布局的填充器,是用来加载布局文件的
* container显示fragment的父级控件
* savedInstanceState baocunfragment的状态
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// return super.onCreateView(inflater, container, savedInstanceState);
// getActivity() 是得到fragment所运行在的activity对象
// resource fragment对应的布局文件资源ID
// root fragment界面显示的父级控件
View view = View.inflate(getActivity(), R.layout.f01, null);
// 返回view表示把view显示在当前的activity界面上,不返回就不显示
return view;
}
}
fragment 的显示步骤
- 创建一个fragment的类,继承了父类Fragment;
- 创建fragment的布局文件;
- 在代码中显示fragment的子界面;
1.在fragment的onCreateView方法中,加载布局文件,显示出来;
2.在activity中,创建fragment对象;
3.创建fragment管理器;
4.通过fragment管理器得到fragment事务;
5.调用发ragment事务的方法,显示fragment子界面;
6.提交fragment事务;
// 1.创建fragment01对象
f01 = new Fragment01();
// 2.得到系统的提供的fragmentManager
fm = this.getFragmentManager();
// 3.得到fragment的事务,他可以保证多个fragment要么同时显示成功,要么同时显示失败
FragmentTransaction transaction = fm.beginTransaction();
// 4.把f01的界面显示在activity中
transaction.replace(R.id.fl_container, f01);
// 5.提交fragment的事务,把界面显出来
transaction.commit();
注意:
- 使用replace()方法是因为这里面界面相互替换,要是添加子界面就用add()方法
- 不同的业务要用不同的事务来提交,所以事务不能为成员变量
- 事务的作用:是为了保证一个界面里面显示的多个界面要么同时显示成功,要么同时显示失败
fragment 向下兼容问题
android-support-v4.jar:是为了让高版本的api能够向下兼容,
v4就表示向下兼容到api级别为4的版本.
修改的步骤:
- 在Fragment类中,继承support-v4中的Fragment;
- 在activity中,让activity继承support-v4中的FragmentActivity;
- 在方法中,把所有与fragment相关api都是用support-v4中的api;
- android.support.v4.app.Fragment
- public class MainActivity extends FragmentActivity{
android.support.v4.app.FragmentActivity;
3.android.support.v4.app.FragmentManager;
// 得到系统的提供的fragmentManager fm = this.getSupportFragmentManager();
4.android.support.v4.app.FragmentTransaction