Fragment中嵌套Fragment,不顯示

先看一段錯誤代碼,這段代碼寫在一個 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()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章