Android小記--Fragment碎片①

1、Fragment是Android在3.0版本后引入的,初衷是為了適應(yīng)大屏幕的平板電腦。

2、使用Fragment可以吧屏幕分為幾塊,然后進(jìn)行分組,進(jìn)行模塊化的管理

3、Fragment并不能單獨(dú)使用,他需要嵌套在Activity中使用,盡管它有自己的生命周期,但還是會(huì)受到宿主Activity的生命周期的影響,例如:Activity被destory銷毀了,它也會(huì)跟著銷毀。

4、Fragment需要先導(dǎo)入android-support-v4的jar包才能使用Fragment功能。

5、加載方式:——靜態(tài)加載 ? ——?jiǎng)討B(tài)加載

6、靜態(tài)加載Fragment實(shí)現(xiàn)流程:

? ? ? ①定義Fragment的xml布局文件。

? ? ? ②自定義Fragment類,需繼承Fragment類或其子類,同時(shí)實(shí)現(xiàn)onCreateView()方法,在方法中,通過(guò)inflater.inflate加載布局文件,接著返回view。

? ? ? ③在需要加載Fragment的Activity對(duì)應(yīng)的布局文件中fragment的name屬性需要為全限定類名:即 包名+ “ . ” +fragment自定義的class文件。

? ? ? ④Activity調(diào)用布局即可。

7、動(dòng)態(tài)加載Fragment主要分為四步:

? ? ? ①獲取FragmentManager(fm),在Activity中可以直接通過(guò)getSupportFragmentManager(或者getFragmentManager)(通過(guò)這get...來(lái)管理activity中的fragment)得到。

? ? ? ②開(kāi)啟一個(gè)事務(wù),通過(guò)調(diào)用beginTransaction方法開(kāi)啟(fm.beginTransaction();)。

? ? ? ③向容器中加入Fragment,調(diào)用add()方法或者replace()方法加載Fragment,(add(要傳入的容器,fragment對(duì)象))。

? ? ? ④在前面的基礎(chǔ)上還需調(diào)用commit()方法提交事務(wù),當(dāng)然還有其他方法,如remove。

8、FragmentTransaction(fragment事務(wù))

一般用來(lái)對(duì)當(dāng)前的Fragment進(jìn)行管理,常用的針對(duì)Fragment的方法有:

------將一個(gè)fragment實(shí)例添加到Activity的最上層

add(要傳入的容器,fragment對(duì)象);

------將一個(gè)fragment實(shí)例從Activity的fragment隊(duì)列中刪除

remove(Fragment?fragment);

------替換containerViewId中的fragment實(shí)例,注意,它首先把containerViewId中所有fragment刪除,然后再add進(jìn)去當(dāng)前的fragment

replace(要傳入的容器,fragment對(duì)象);

9、使用add方法而不常用replace的原因:

——如果我們使用replace來(lái)切換頁(yè)面,那么在每次切換的時(shí)候,F(xiàn)ragment都會(huì)重新實(shí)例化,重新加載一邊數(shù)據(jù),這樣非常消耗性能和用戶的數(shù)據(jù)流量。

——?這是因?yàn)閞eplace操作,每次都會(huì)把Container中的現(xiàn)有的fragment實(shí)例清空,然后再把指定的fragment添加進(jìn)去,就就造成了在切換到以前的fragment時(shí),就會(huì)重新實(shí)例會(huì)fragment。

?——正確的切換方式是add(),切換時(shí)hide(),add()另一個(gè)Fragment;再次切換時(shí),只需hide()當(dāng)前,show()另一個(gè)。?這樣就能做到多個(gè)Fragment切換不重新實(shí)例化

10、Fragment管理與Fragment事務(wù)


最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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