【BUG系列】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()。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 时光·李记
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果