一、使用方法
1、繼承自Fragment,實(shí)現(xiàn)onCreateView以顯示
2、布局文件中顯示
在Activity的xml文件中布局Fragment(必須聲明ID,否則崩潰,不提倡使用)
注意:此時(shí)如果Fragment是繼承自android.support.v4.app.Fragment,則Activity必須是繼承自android.support.v4.app.FragmentActivity。
Fragment在Android 3.0(API level 11)后推出,為了在以前的低版本中使用,引入了android.support.v4.app.Fragment 和android.support.v4.app.FragmentActivity。
3、代碼中動(dòng)態(tài)顯示
getFragmentManager().beginTransaction().replace(R.id.fl_a_1,fragment1).commit();
4、FragmentTransaction的幾種操作
(1)add(int viewId,Fragment fragment):將Fragment添加到指定布局文件中指定ID的view中
(2)hide(Fragment fragment):隱藏Fragment(實(shí)際上Fragment仍然存在、存活)
(3)show(Fragment fragment):顯示Fragment,與hide對(duì)應(yīng)
(4)remove(Fragment fragment):將Fragment移除,如果沒(méi)有將Fragment添加到回退棧中,F(xiàn)ragment將被銷毀。
(5)replace(int viewId,Fragment fragment):替換指定id的控件為指定的Fragment
(6)detach(Fragment fragment):將指定fragment從UI中移除,F(xiàn)ragment存活,不執(zhí)行onDestroy和onDetach方法。
(7)attach(Fragment fragment):重建view視圖,附加到UI上并顯示。如果是調(diào)用完detach方法再來(lái)此方法不會(huì)調(diào)用onAttach和onCreate方法
在執(zhí)行完以上操作后再調(diào)用commit方法提交事務(wù)才能生效
二、生命周期
1、onAttach
當(dāng)Fragment與Activity發(fā)生關(guān)聯(lián)的時(shí)候調(diào)用,傳入一個(gè)Context上下文參數(shù)。
2、onCreate
當(dāng)創(chuàng)建Fragment時(shí)與onAttach一起被調(diào)用。
3、onCreateView
每次創(chuàng)建、繪制Fragment的View時(shí)調(diào)用并返回一個(gè)View對(duì)象
4、onActivityCreate
當(dāng)Fragment所在的Activity被onCreate完成時(shí)調(diào)用
5、onDestroyView
當(dāng)Fragment的視圖被移出時(shí)調(diào)用
6、onDestroy
當(dāng)Fragment被銷毀時(shí)調(diào)用;
7、onDetach
與onAttach相對(duì)應(yīng),當(dāng)Fragment與Activity關(guān)聯(lián)被取消時(shí)調(diào)用。但是,調(diào)用detach方法是并不會(huì)調(diào)用它。
三、FragmentPagerAdapter與FragmentStatePagerAdapter
當(dāng)使用Fragment與ViewPager搭配時(shí),必須適應(yīng)FragmentActivity和android.support.v4.app.Fragment。
Viewpager至少會(huì)預(yù)加載左右兩側(cè)相鄰的1個(gè)頁(yè)面
1、區(qū)別:
使用FragmentPagerAdapter時(shí),會(huì)緩存每個(gè)Fragment,F(xiàn)ragmentStatePagerAdapter則不會(huì)。當(dāng)離開(kāi)當(dāng)前Fragment界面時(shí),F(xiàn)ragmentStatePagerAdapter會(huì)銷毀(FragmentPagerAdapter則會(huì)銷毀Fragment的view)上上個(gè)(或上個(gè),如果有)界面的Fragment:
FragmentPagerAdapter :onPause、onStop、onDestroyView? ?(不完全銷毀)
FragmentStatePagerAdapter :onPause、onStop、onDestroyView、
onDestroy、onDetach? ? ? ? ? (完全銷毀)
對(duì)于FragmentStatePagerAdapter ,每次銷毀時(shí)都會(huì)自動(dòng)調(diào)用onSaveInstanceState(Bundle outState)方法通過(guò)bundle將信息保存下來(lái),之后可在onCreate方法中進(jìn)行回訪創(chuàng)建。