概述
Android3.0開始引入這個新特性梳猪。主要用于實現(xiàn)一個多任務(wù)的界面麻削。
fragement是activity的子界面,是運行在activity里面的春弥。
繼承fragment 要求最低版本是11 也就是3.0 fragment剛開始是為平板準備的呛哟,現(xiàn)在用的也越來越多
布局控件 使用幀布局
<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的狀態(tài)
*/
@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 的顯示步驟
- 創(chuàng)建一個fragment的類,繼承了父類Fragment;
- 創(chuàng)建fragment的布局文件;
- 在代碼中顯示fragment的子界面;
1.在fragment的onCreateView方法中,加載布局文件,顯示出來;
2.在activity中,創(chuàng)建fragment對象;
3.創(chuàng)建fragment管理器;
4.通過fragment管理器得到fragment事務(wù);
5.調(diào)用發(fā)ragment事務(wù)的方法,顯示fragment子界面;
6.提交fragment事務(wù);
// 1.創(chuàng)建fragment01對象
f01 = new Fragment01();
// 2.得到系統(tǒng)的提供的fragmentManager
fm = this.getFragmentManager();
// 3.得到fragment的事務(wù),他可以保證多個fragment要么同時顯示成功,要么同時顯示失敗
FragmentTransaction transaction = fm.beginTransaction();
// 4.把f01的界面顯示在activity中
transaction.replace(R.id.fl_container, f01);
// 5.提交fragment的事務(wù),把界面顯出來
transaction.commit();
注意:
- 使用replace()方法是因為這里面界面相互替換匿沛,要是添加子界面就用add()方法
- 不同的業(yè)務(wù)要用不同的事務(wù)來提交扫责,所以事務(wù)不能為成員變量
- 事務(wù)的作用:是為了保證一個界面里面顯示的多個界面要么同時顯示成功,要么同時顯示失敗
fragment 向下兼容問題
android-support-v4.jar:是為了讓高版本的api能夠向下兼容,
v4就表示向下兼容到api級別為4的版本.
修改的步驟:
- 在Fragment類中,繼承support-v4中的Fragment;
- 在activity中,讓activity繼承support-v4中的FragmentActivity;
- 在方法中,把所有與fragment相關(guān)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;
// 得到系統(tǒng)的提供的fragmentManager fm = this.getSupportFragmentManager();
4.android.support.v4.app.FragmentTransaction