美文网首页android 开发程序员程序员Android开发经验谈
两层Fragment嵌套,外层Fragment切换时内层Frag

两层Fragment嵌套,外层Fragment切换时内层Frag

作者: no白菜 | 来源:发表于2017-11-27 19:39 被阅读0次

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

    文章地址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 );        
    }

    相关文章

      网友评论

        本文标题:两层Fragment嵌套,外层Fragment切换时内层Frag

        本文链接:https://www.haomeiwen.com/subject/roadbxtx.html