1. 程式人生 > >Android 多層fragment 巢狀時,viewPager不顯示的問題

Android 多層fragment 巢狀時,viewPager不顯示的問題

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/zkll200/article/details/73692518

先看一段錯誤程式碼,這段程式碼寫在一個 Fragment 中:

private void initView(){

    mViewPageAdpater = new ViewPageAdpater( getFragmentManager() );

    mFragments.add( new BoonListFragment() );

    mTitles.add( "title1" );

    mFragments.add( new BoonListFragment() );

    mTitles.add( "title2" );

    mFragments.add( new BoonListFragment() );

    mTitles.add( "title3" );

    mViewPageAdpater.setFragments( mFragments, mTitles );        

}

這段程式碼看上去一切正常,但是有時候就是好好的就是現實不出來,找來找去死活找不到原因。

一切東西都是普通的再不普通不過的 List 或者 Adapter,List這麼簡單的東西還能出問題?

那就是Adapter的問題了,Adapter裡面實現的不對嗎?也沒有問題啊,就那麼簡單的幾個方法。

最後終於發現,問題就在 new ViewPageAdpater( getFragmentManager() ); 這裡。

之前就知道 fragment中巢狀fragment 應該使用 getChildFragmentManager() ,每次用起來都是忘了。

正確的寫法:

private void initView(){

    mViewPageAdpater = new ViewPageAdpater( getChildFragmentManager() );

    mFragments.add( new BoonListFragment() );

    mTitles.add( "title1" );

    mFragments.add( new BoonListFragment() );

    mTitles.add( "title2" );

    mFragments.add( new BoonListFragment() );

    mTitles.add( "title3" );

    mViewPageAdpater.setFragments( mFragments, mTitles );        

}

以後每當在 Fragment 中要用到 FragmentManager 的時候一定要記住,使用 getChildFragmentManager()。

--------------------- 本文來自 wei_think 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/zkll200/article/details/73692518?utm_source=copy