Fragment嵌套需要注意的问题

1.场景

底部导航的页面切换一般是用几个Fragment实现滑动点击切换的,那么在其中一个Fragment中需要实现顶部选项卡切换(举个栗子:网易新闻客户端的主页),这时候就需要在一个Fragment中嵌套Fragment来实现了。**以下外层的Fragment称为 "Fragment" ,里层的Fragment成为 "子Fragment" **

2.问题

但是在实现过程中经常会出现 子Fragment 无法显示的问题。

3.解决方法

  • 检查在 Fragment 给ViewPager设置Adapter时,传入Adapter的参数应该为getChildFragmentManager(),而不是getFragmentManager(),代码清单如下:
mAdapter = new MyPagerAdapter(getFragmentManager());

改为:

mAdapter = new MyPagerAdapter(getChildFragmentManager());
  • 如果此时还没有解决问题,需要把你的FragmentPagerAdapter改为FragmentStatePagerAdapter
    两者区别如下:
    FragmentPagerAdapter 继承自 PagerAdapter。相比通用的 PagerAdapter,该类更专注于每一页均为 Fragment 的情况。如文档所述,该类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;如果需要处理有很多页,并且数据动态性较大、占用内存较多的情况,应该使用FragmentStatePagerAdapter

这样就可以正确显示了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容