真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

四大組件(5)-Fragment

Fragment

成都創(chuàng)新互聯(lián)科技有限公司專業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供雅安機(jī)房托管,高防服務(wù)器,成都IDC機(jī)房托管,成都主機(jī)托管等互聯(lián)網(wǎng)服務(wù)。

由于Activity太“重”不能動(dòng)態(tài)注冊(cè)、不能模塊化,因此引入Fragment

一、生命周期

onAttach():Fragment和Activity相關(guān)聯(lián)時(shí)調(diào)用。可以通過該方法獲取Activity引用,還可以通過getArguments()獲取參數(shù)。

onCreateView():創(chuàng)建Fragment的布局。

onActivityCreated():當(dāng)Activity完成onCreate()時(shí)調(diào)用。

onDestroyView():當(dāng)Fragment的UI從視圖結(jié)構(gòu)中移除時(shí)調(diào)用。

onDetach():當(dāng)Fragment和Activity解除關(guān)聯(lián)時(shí)調(diào)用。

其它生命周期與Activity相同

上面的方法中,只有onCreateView()在重寫時(shí)不用寫super方法,其他都需要。

二、注意事項(xiàng)

1、參數(shù)傳遞 使用setArg(“bundle”),F(xiàn)ragment最好創(chuàng)建個(gè)newInstance(xx),讓調(diào)用者不需要知道key名稱

2、getActivity在onAttach中獲取.

3、提交盡量用Commit,如在異步中提交,建議使用commitAllowingStateLoss()?

? ? ? ? commit? -> 安排當(dāng)前事務(wù)FragmentTransaction進(jìn)行提交。異步,必須在Activity的onSaveInstanceState調(diào)用之前提交。否則會(huì)拋異常。

commitAllowingStateLoss ->? 和commit類似。但是如果本次是在Activity的onSaveInstanceState調(diào)用之后,那么本次提交記錄在Activity恢復(fù)的時(shí)候,可能不被保存。

commitNow() ->將事務(wù)立即提交。所有添加的Fragment會(huì)被立即初始化,并開始生命周期。所有被移除的Fragment將會(huì)被立即移除。

調(diào)用這個(gè)方法,相當(dāng)于調(diào)用commit,然后調(diào)用FragmentManager的executePendingTransactions()。

commitNowAllowingStateLoss() -> 和commitNow類似。但是如果在在Activity的onSaveInstanceState調(diào)用之后,那么本次提交記錄在Activity恢復(fù)的時(shí)候,可能不被保存。

?4..當(dāng)FragmentA(初始化)和FragmentB(后啟動(dòng))調(diào)用 fragmentTransaction.replace()

 "新建"??(onAttach->onCreate->onCreateView->onActivityCreated)

 "顯示" ?(onStart->onResume)

 "隱藏" ?(onPause->onStop)

 “結(jié)束” ?(onDestroyView->onDestroy->onDetach)

 FragmentA?"打開"--->執(zhí)行?"新建"??再執(zhí)行FragmentA 的"顯示"

 FragmentB?"打開"--->執(zhí)行FragmentA "隱藏" ?再才執(zhí)行FragmentA “關(guān)閉”?執(zhí)行?Fragment B?"新建"??再執(zhí)行Fragment B 的"顯示"

 FragmentB?"關(guān)閉"--->執(zhí)行FragmentB?"隱藏"??再才執(zhí)行FragmentB?“關(guān)閉”?最后執(zhí)行FragmentA 的"顯示"

5、防止fragment重新加載,浪費(fèi)用戶流量或者影響用戶體驗(yàn)。對(duì)于FragmentTransation的replace方法,官方的建議是如果上一個(gè)fragment是不保留的情況下可以使用。否則的話采用先add然后根據(jù)需求hide或者show,這樣可以實(shí)現(xiàn)fragment緩存,另外一張情況就是和ViewPager聯(lián)合使用,然后設(shè)置setOffscreenPageLimit()這個(gè)方法設(shè)置緩存的頁(yè)面的大小。?

加回退棧的操作,如果使用 addToBackStack(String)將會(huì)拋出一個(gè) IllegalStateException的異常。

參考:

基礎(chǔ)(轉(zhuǎn)載):https://www.jianshu.com/p/11c8ced79193

進(jìn)階(轉(zhuǎn)載):https://www.jianshu.com/p/d9143a92ad94

備注:個(gè)人筆記,有錯(cuò)請(qǐng)及時(shí)指出,謝謝?聯(lián)系QQ:285232718


網(wǎng)站標(biāo)題:四大組件(5)-Fragment
文章分享:http://weahome.cn/article/piohhc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部