fragment的整理

1 靜態創建
1 創建一個類繼承Fragment
2在Activity的xml文件中使用<fragment>進行配置,id,name必須寫(id作爲唯一標識)
3 可以在自定義類中實現想要顯示的內容

2 動態創建
1 在Activity的xml文件中,先用一個<framlayout >佔一個位置
2 自定義實現Fragment
3 創建一個FragmentManager, 使用getSupportFragmentManager獲取對象
4 使用FragmentManager的beginTranslation方法開啓一個事務
5 使用FragmentTranslation進行add,replace,show(Fragment),hidden(Fragemnt)等操作,將fragment添加到佔位佈局中,或者取代,隱藏等。
注意:一個碎片只可以添加 提交一次;用新的替換舊的,如果沒把舊的添加到回退棧,舊的會被銷燬;如果添加到回退棧,只銷毀視圖(DestoryView)。
6執行commit()提交。

系統設置發生改變 ,如 橫豎屏改變,系統會調用無參的構造函數,

3 傳值的三種方式
1 getActivity: 不建議
2 構造函數傳值: 不建議 當系統設置發生改變,會調用一個無參構造函數,然後值就會消失。
3 Bundle
4 接口回調
/***
*** 使用Bundle傳遞
**/
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
//在調用顯示碎片相關方法之前,可以通過setArgument方法傳入Bundle對象
FragmentContent fc = new FragmentContent("老夫聊發少年狂, 一樹梨花壓海棠");
//構造一個Bundler對象,並put相關數據
Bundle bundle = new Bundle();
bundle.putString("poet", "寬衣解帶進羅帷, 含羞帶笑把燈吹");
fc.setArguments(bundle);
ft.replace(R.id.containerId, fc);
ft.commit();
***************************************************************************************************/**
* 第二種傳值方式:setArguments和getArguments方法
* 1 在Activity中動態添加Fragment之前,先調用setArguments(Bundle)向Fragment中傳入一個Bundler對象
* 2 在Fragment中調用getArguments方法,取出之前傳入的Bundle對象
* 3 從Bundle對象中取出相應的數據
*/
private void passValueSecond() {
Bundle bundle = getArguments();
//說明顯示碎片之前,調用過setArguments方法
if(bundle != null) {
String poet = bundle.getString("poet");
Toast.makeText(getActivity(), "poet is " + poet, Toast.LENGTH_SHORT).show();
}
}


4 fragment生命週期

標題欄列表爲:默認加載左右各一個fragment




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章