两层Fragment嵌套,外层Fragment切换时内层Fragment不显示内容

写在最前面的本文章参考以下两篇文章

文章地址1:http://blog.csdn.net/bingospunky/article/details/46847269
文章地址2:http://blog.csdn.net/jdsjlzx/article/details/52562173

首先先看一段错误的嵌套代码

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() );
应该把 getFragmentManager()缓存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 );        
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容