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&