Activity嵌套Fragment,Fragment里用viewPager嵌套子Fragment报错解决方案
来源:互联网 发布:18rmmd动作数据 编辑:程序博客网 时间:2024/05/21 14:10
Activity里有三个fragment,分别是A,B,C,ABC是可以动态地互相替换的,其中C中有一个viewPager,viewPager里有两个fragment,分别是D,E。
Activity切换到C,然后切换到A或者B,再切换到C,就会出现报错。其中的原因是C中的viewPager里的adapter里的fragmentManager状态是Activity已销毁。
方法一:
解决方案是在C中通过反射更改viewPager的状态,重新创建adapter再设置到viewPager上。
具体代码如下:
fragments = new ArrayList<Fragment>();fragments.add(new SalesLogMonthlyFirstHalfYearDashboardFragment());fragments.add(new SalesLogMonthlySecondHalfYearDashboardFragment());PagerAdapter adapter = viewPager.getAdapter();if (adapter != null) { try { Field mAdapter = ViewPager.class.getDeclaredField("mAdapter"); mAdapter.setAccessible(true); mAdapter.set(viewPager, null); Field mObserver = ViewPager.class.getDeclaredField("mObserver"); mObserver.setAccessible(true); mObserver.set(viewPager, null); Field mItems = ViewPager.class.getDeclaredField("mItems"); mItems.setAccessible(true); ((List) mItems.get(viewPager)).clear(); viewPager.removeAllViews(); } catch (NoSuchFieldException e) { throw new RuntimeException(e); } catch (IllegalAccessException e) { throw new RuntimeException(e); }}pageAdaper = new FragmentPagerAdapter(getChildFragmentManager()) { @Override public int getCount() { return 2; } @Override public Fragment getItem(int position) { return fragments.get(position); }};viewPager.setAdapter(pageAdaper);
方法二:动态Fragment改成静态
思路:动态的Fragment涉及到生命周期问题,改成静态后就不会出现因生命周期导致逻辑出错。
将如下的布局:
改成:
这样一旦fragment加入到activity之后,就不会与activity解绑,就不会出现解绑后重新绑定的生命周期问题。
0 0
- Activity嵌套Fragment,Fragment里用viewPager嵌套子Fragment报错解决方案
- viewPager+fragment嵌套viewPager+fragment
- ViewPager+Fragment嵌套ViewPager+Fragment
- 在Activity里嵌套Fragment
- Fragment嵌套问题Fragment一个ViewPager展示子Fragment
- Fragment嵌套Viewpager嵌套Fragment,切换后数据不见了解决方案....
- Fragment+Viewpager+嵌套Tablelayout+fragment
- Fragment嵌套Fragment和Viewpager
- Fragment嵌套Fragment和Viewpager
- Fragment嵌套Viewpager时报错
- Fragment里面嵌套ViewPager
- ViewPager+Fragment嵌套
- Fragment嵌套ViewPager
- fragment嵌套viewpager
- ViewPager嵌套Fragment
- Android ViewPager嵌套Fragment
- Viewpager+Fragment嵌套Viewpager+Fragment空白页问题
- ViewPager+Fragment以及Fragment嵌套ViewPager
- Warning: The Copy Bundle Resources build phase contains this target's Info.plist file
- iOS轮子: 下拉刷新,上拉加载更多
- 【JZOJ4894】【NOIP2016提高A组集训第16场11.15】SJR的直线
- C#练习--库存管理
- 数据结构笔记之动态链表
- Activity嵌套Fragment,Fragment里用viewPager嵌套子Fragment报错解决方案
- cocos2d-js如何在android平台上使用js直接调用Java方法
- 收集了自定义 View 最优质的学习资料。
- Lua中os库详细介绍
- 小报告
- CDH5.9.0集群部署与搭建
- 百姓实惠超市部分
- 菜鸟的Shell脚本之路---向linux系统中添加dos2unix和rz,sz命令
- 理解流量监管和整形的关键算法—令牌桶