最近在项目开发中,偶现遇到
java.lang.IllegalStateException: Recursive entry to executePendingTransactions
E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1589)
E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
E/AndroidRuntime: at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
E/AndroidRuntime: at android.support.v4.view.ViewPager.setAdapter(ViewPager.java:476)E/AndroidRuntime: at
异常,真是头大,也没说是代码哪里出错了
以下是我实现功能代码:
if (fm == null) {
fm = getSupportFragmentManager();
}
if (!views.isEmpty()) {
FragmentTransaction ft = fm.beginTransaction();
for (Fragment f : views) {
ft.remove(f);
}
ft.commitAllowingStateLoss();
ft = null;
fm.executePendingTransactions();
}
views.clear();
views.add(new GranaryMapFragment_());
views.add(new BasisGranaryInfoFragment_());
views.add(new GranarySMartFragment_());
views.add(new GrainInfoFragment_());
views.add(new GeneralGrainInfoFragment_());
views.add(new GrainReportFragmentNew_());
views.add(new GranaryMapFragment_());
views.add(new BasisGranaryInfoFragment_());
adapter.notifyDataSetChanged();
弄来弄起,想着不会是fragment源码bug吧,自己看代码与网上查资料,都没找到解决办法
最后思来想去就是不知道原因是什么o(╥﹏╥)o,之后用蠢办法,一个个将加载的fragment 注释掉运行检查,最后发现是其中一个fragment 中控件出现空指针(捂脸 )导致的,也是醉了。
原来使用viewpager 加载fragment ,fragment内部出现问题有时候报错了,log也不会打印说那出现问题,就直接会报java.lang.IllegalStateException: Recursive entry to executePendingTransactions异常,因此遇到这样的问题,以后就只能用蠢办法一个个debug fragment是否正常了
愿那些跟我一样遇到这样问题的朋友看到这个,给你提供一个思考方向早日解决问题