1恬涧、Fragment的創(chuàng)建
(1)盡量使用v4包中的Fragment
(2)必須重寫onCreateView()方法,使用inflater,從xml布局文件加載一個布局并返回。
注意:
1)傳遞至onCreateView()的container參數(shù)是您的 Fragment 布局將插入到的父?ViewGroup(來自 Activity 的布局)怕篷。savedInstanceState參數(shù)是在恢復 Fragment 時,提供上一 Fragment 實例相關數(shù)據的Bundle(處理 Fragment 生命周期部分對恢復狀態(tài)做了詳細闡述)酗昼。
2)inflate(int resource,ViewGroup root, boolean attachToRoot)方法帶有三個參數(shù):
resource:您想要擴展的布局的資源 ID廊谓;
root:將作為擴展布局父項的ViewGroup。傳遞container對系統(tǒng)向擴展布局的根視圖(由其所屬的父視圖指定)應用布局參數(shù)具有重要意義麻削;
attachToRoot:指示是否應該在擴展期間將擴展布局附加至ViewGroup(第二個參數(shù))的布爾值蹂析。(在本例中,其值為 false碟婆,因為系統(tǒng)已經將擴展布局插入container— 傳遞 true 值會在最終布局中創(chuàng)建一個多余的視圖組。)
(3)傳參
一般使用 Fragment惕稻,直接使用 new竖共,如果有參數(shù),直接在構造方法中傳入俺祠。但這樣會有問題公给,比如當屏幕方向發(fā)生變化借帘,F(xiàn)ragment 中的數(shù)據就會丟失。原因是系統(tǒng)會重新構造一個新的 Fragment淌铐,調用的是無參的構造方法肺然,因此你傳入的數(shù)據都會丟失。
解決方案:使用 Fragment.setArguments(Bundle) 進行傳參腿准。因為 Bundle 會被保存下來际起,當重新構建 Fragment 時,Bundle 仍然有效吐葱。
2街望、Fragment與Activity生命周期對應關系
3、Fragment管理及其事務
(1)Fragment管理使用FragmentManager弟跑,可從Activity中調用getSupportFragmentManager() 來獲取灾前。
(2)Fragment事務使用FragmentTransaction來完成,調用add()孟辑、remove()和replace()等方法為給定事務設置您想要執(zhí)行的所有更改哎甲。然后,要想將事務應用到 Activity饲嗽,您必須調用commit()炭玫。
FragmentTransaction可以通過FragmentManager.beginTransaction()來獲取。
4喝噪、與Activity之間通信
(1)簡單的:Fragment可以通過getActivity()來訪問Activity础嫡,Activity也可以通過findFragmentById()或Tag的方式訪問Fragment,當然亦可以通過FragmentManager酝惧。
(2)重點:使用回調的方式
在某些情況下榴鼎,您可能需要通過 Fragment 與 Activity 共享事件。執(zhí)行此操作的一個好方法是晚唇,在 Fragment 內定義一個回調接口巫财,并要求宿主 Activity 實現(xiàn)它。 當 Activity 通過該接口收到回調時哩陕,可以根據需要與布局中的其他 Fragment 共享這些信息平项。
步驟:
1)Fragment 創(chuàng)建回調接口,并保留一個引用 mCallBack
2)宿主 Activity 實現(xiàn)回調接口
3)通過 Fragment 的 onAttach(Activity activity) 方法實例化 mCallBack
4)在 Fragment 中觸發(fā)響應事件時悍及,調用接口方法闽瓢,實現(xiàn)共享信息
以上所有均參考Android開發(fā)者--Fragment文檔