美文网首页Android开发经验谈Android Tips
【BUG系列】Fragment中嵌套Fragment,不显示

【BUG系列】Fragment中嵌套Fragment,不显示

作者: Wing_Li | 来源:发表于2016-04-15 10:09 被阅读3122次

    如果本文帮助到你,本人不胜荣幸,如果浪费了你的时间,本人深感抱歉。
    希望用最简单的大白话来帮助那些像我一样的人。如果有什么错误,请一定指出,以免误导大家、也误导我。
    本文来自:http://www.jianshu.com/users/320f9e8f7fc9/latest_articles
    感谢您的关注。

    先看一段错误代码,这段代码写在一个 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()

    相关文章

      网友评论

        本文标题:【BUG系列】Fragment中嵌套Fragment,不显示

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