从Fragment嵌套fragment到Viewpager嵌套Fragment再嵌套fragment

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013055213/article/details/75670341

最近在做一个模块的优化,这个界面是通过复杂的逻辑实现的,点击按钮通过FragmentManager来切换模块.每个模块还都有待办和已办.所以就用fragment嵌套fragment,但是这样写代码量很多,所以就想用Tablayout+Viewpager+fragment来实现.

界面效果

遗憾的是,Tablayout添加依赖,是26.0.0版本的,而且主题需要使用AppCompThem,这个导致我的一个自定义Dialog显示效果不佳,所以暂时放弃了.使用按钮+Viewpager+fragment来实现.就遇到图中的问题.查了好多,甚至使用了fragment懒加载,主要是防止开始加载过多数据的,不过倒是不再出现数据混乱的效果了,但是这两个模块总有一个是空的.显然问题并没有解决.后来想是不是viewpager嵌套双层fragment导致的呢?查了一下,果然有了点眉目.原来是因为中间这层fragment获取manager是使用的是getFragmentManager(),而改成getChildFragmentManager()问题就解决了.那么我们来看一下他们有什么区别吧!

getFragmentManager()是所在fragment 父容器的碎片管理, getChildFragmentManager()是在fragment 里面子容器的碎片管理。 详细的还有getSupportFragmentManager()的区别,可以参考

这篇博客

百思不得其解的问题终于解决了,但是我一个同事就用的是getFragmentmanager就没有问题,这个也让我有点搞不懂.欢迎讨论!

猜你喜欢

转载自blog.csdn.net/u013055213/article/details/75670341
今日推荐