Android中Fragment嵌套Fragment,切換Fragment時(shí)不顯示視圖的原因及解決方法

項(xiàng)目中經(jīng)常會(huì)用到ViewPager配合Fragment進(jìn)行滑動(dòng)視圖的實(shí)現(xiàn),經(jīng)常配合FragmentPagerAdapter一起使用。
當(dāng)需要在Fragment(姑且叫做A)中嵌套另外一個(gè)Fragment(姑且叫做B)的時(shí)候,第一次啟動(dòng)這兩個(gè)Fragment沒有問題,但是當(dāng)從B切換回A時(shí),有時(shí)會(huì)遇到A中本該顯示的視圖沒有顯示,而是一片空白!而代碼本身是沒有任何錯(cuò)誤的。
會(huì)不會(huì)很郁悶?
Fragment放ViewPager,ViewPager里面是fragment。第一次進(jìn)入沒問題,再次進(jìn)入ViewPager的fragment時(shí)里面內(nèi)容就沒了,數(shù)據(jù)丟失。

上面是布局,其中菜單A和B是DrawerLayout中的兩個(gè)菜單,共用一個(gè)FragmentA,在每個(gè)菜單里面又有兩個(gè)菜單——菜單a和菜單b,a和b共用一個(gè)FragmentB。其實(shí)a和b也在FragmentA中,跟FragmentB合起來占用整個(gè)屏幕。

在給菜單a和b實(shí)現(xiàn)滑動(dòng)切換的時(shí)候用的是ViewPager,給ViewPager設(shè)置FragmentPagerAdapter,并在FragmentPagerAdapter.getItem()
里返回Fragment就可以讓菜單ab里面的內(nèi)容成現(xiàn)在FragmentB中。

可是問題就是從A切換到B沒有問題,再?gòu)腂切換到A時(shí),有的時(shí)候卻顯示不出A的視圖,再切換到B也是這樣。

原因是:子fragment用父fragment的FragmentManager了,然后不會(huì)出來內(nèi)容。
解決方法:在初始化FragmentPagerAdapter的時(shí)候不要傳入getFragmentManager(),
而應(yīng)該傳入getChildFragmentManager()這個(gè)方法。即:把

MyRentInFragmentPagerAdapter adapter = new MyRentInFragmentPagerAdapter(getFragmentManager());

換成

MyRentInFragmentPagerAdapter adapter = new MyRentInFragmentPagerAdapter(getChildFragmentManager());

在這個(gè)項(xiàng)目中又遇見了一個(gè)問題,F(xiàn)ragment跟FragmentManager的包導(dǎo)的是android.app.Fragment的,這樣就沒有getChildFragmentManager()這個(gè)方法了,只有android.support.v4.app.Fragment這個(gè)包才有,
所以從一開始只要用到Fragment跟FragmentManager的時(shí)候就用android.support.v4.app.Fragment這個(gè)包吧!

最后編輯于
?著作權(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)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,741評(píng)論 25 709
  • 引言:這篇文章,大概分析下Fragment的生命周期、實(shí)際應(yīng)用方法以及使用Fragment時(shí)需要注意的地方,算是F...
    androidjp閱讀 13,097評(píng)論 10 104
  • 高調(diào)奢華有內(nèi)涵的東西沒有不讓人愛的,但是有些時(shí)候,那種低調(diào)并且又能勾起你嘴角微笑之漣漪的,就是簡(jiǎn)簡(jiǎn)單單帶來的不可復(fù)...
    植尚淇閱讀 250評(píng)論 0 3
  • 文本處理sed 一:簡(jiǎn)介 ? Stream EDitor, 行編輯器首先對(duì)于一個(gè)文本文件來說,它是由至上而下的一行...
    芷_念閱讀 384評(píng)論 0 1
  • 早睡早起323天100篇時(shí)間管理系統(tǒng)文章第12篇 休息了兩天沒有更新文章,今天騰哥直接上干貨。給大家談?wù)勎铱朔涎?..

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