使用Fragmentation,start跳转到嵌套viewpager页面出现返回键重写失效原因。

简介: 最近在写项目时,采用的是单Activity+多Fragment的架构,用的Fragmentation的库。我的主页面是一个BootomFragment的抽象类(当然它还有一个管理类),其又继承自最大的LatteDelegate,LatteDelegate又继承自Fragment并实现Fragmentation库的接口,当然,当然这只是其中一部分,所以简略的讲了一下,大概知道层次就行。

在Fragment中嵌套ViewPager时应该使用getChildFragmentManager(),而不是getFragmentManager();


getFragmentManager()所得到的是所在fragment 的父容器的管理器,
getChildFragmentManager()所得到的是在fragment  里面子容器的管理器。

 

最近在写项目时,采用的是单Activity+多Fragment的架构,用的Fragmentation的库。我的主页面是一个BootomFragment的抽象类(当然它还有一个管理类),其又继承自最大的LatteDelegate,LatteDelegate又继承自Fragment并实现Fragmentation库的接口,当然,当然这只是其中一部分,所以简略的讲了一下,大概知道层次就行。


别的功能例如主界面,个人中心等等继承自其BootomFragment,并在BootomFragment抽象类里重写了返回事件方法,为了双击返回效果。


结果就是从主页面start到item详细信息时,当我再次返回时,我的双击返回事件居然失效了。


查其原因是因为我的item详细界面中嵌套了Viewpager,而我在设置FragmentStatePagerAdapter时,传入的是getFragmentManager()。导致我的事务直接被退,也就是我的BootomFragment成了一个新的Fragment,导致我重写的返回方法直接失效。这时候当再次点返回键,就成为了Fragmentation库默认的返回方法,也就是根据栈内Fragment,逐一退栈。


   private void initPager(JSONObject data) {
        final PagerAdapter adapter = new TabPagerAdapter(getChildFragmentManager(), data);
        mViewPager.setAdapter(adapter);
    }

修复之后


目录
相关文章
|
iOS开发
iOS开发 - touchBegan事件判断点击的位置在View上还是在View的子View上
iOS开发 - touchBegan事件判断点击的位置在View上还是在View的子View上
238 0
iOS开发 - touchBegan事件判断点击的位置在View上还是在View的子View上
|
Android开发
ViewPager源码分析(2):滑动及冲突处理
我的简书同步发布:ViewPager源码分析(2):滑动及冲突处理 转载请注明出处:【huachao1001的专栏:http://blog.csdn.net/huachao1001】 上一篇介绍了ViewPager的onMeasure和onLayout两个方法,这是自定义View最基本的两个函数。但是我们的ViewPager有个需求就是滑动,接下来我们一起去学习ViewPager在滑动方面做了哪些工作,以及ViewPager如何处理与子View之间的滑动冲突。由于ViewPager的子View有Decor View还有普通的子View,而本篇文章讲的主要是普通子View,因此,不再去刻意区
ViewPager源码分析(2):滑动及冲突处理
ViewPager2实现内部Item的动态滚动
最近接到了一个需求,大概类似如下图所示的一个样式(省略了部分细节,不影响大概)。
277 0
|
缓存
ViewPager懒加载的实现,理解setUserVisibleHint,而不只是会用就好
Viewpager默认会缓存临近操作的两个页面,也就是至少会缓存一个页面。
157 0
ViewPager懒加载的实现,理解setUserVisibleHint,而不只是会用就好
fragment嵌套viewpager不显示
fragment嵌套viewpager不显示
161 0
ViewPager(通过反射修改viewpager切换速度)
(创建于2016/11/17) import java.lang.reflect.Field; import android.content.
1084 0
ExpandableListView getChildView 不执行,不显示子列表
原因很简单:   在 GroupView 里面不要加入 button 等可点击空间,否则 和 点击 Groupview 展开相冲突。 去掉就好了getGroupView
1751 0
|
容器 索引
ViewPager+Fragment取消预加载(延迟加载)
在项目中,都或多或少地使用的Tab布局,所以大都会用到ViewPager+Fragment,但是Fragment有个不好或者太好的地方。 例如你在ViewPager中添加了三个Fragment,当加载ViewPager中第一个Fragment时,它会默认帮你预先加载了第二个Fragment,当你加载第二个Fragment时,它会帮你加载第三个Fragment。 这样虽然有
1521 0