Fragment使用

一、使用方法

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)建。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容