我有个活动,里面有两个片段。活动在加载对象时开始显示加载程序。然后通过 newInstance 方法将加载的对象作为参数传递给这两个片段,并附加这些片段。
final FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
trans.replace(R.id.container1, Fragment1.newInstance(loadedObject));
trans.replace(R.id.container2, Fragment2.newInstance(loadedObject));
trans.commit();
第二个片段包含 android.support. v4.view. ViewPager 和 tab. onResume,我们按照如下方式初始化它
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(adapter.getCount()); //the count is always < 4
tabLayout.setupWithViewPager(viewPager);
问题是机器人会抛出
IllegalStateException: FragmentManager 已经在执行 交易
使用这个堆栈跟踪: (为了简单起见,我从包名中去掉了 android.support
)
应用程序 v4.app. FragmentManagerImp.ExecSingleAction (FragmentManager.java: 1620) 在 App.BackStackRecord.committee NowAllowingStateloss (BackStackRecord.java: 637) 在 V4.app. FragmentPagerAdapter.finishUpdate (FragmentPagerAdapter.java: 143) (ViewPager.java: 1235) (ViewPager.java: 1083) 在 V4.view. ViewPager.setOffscreen Pagelimit (ViewPager.java: 847)
数据显示是否删除了 setOffscreenPageLimit(...);
。是否有其他方法来避免这个问题?
在生命周期中,什么时候片段事务完成了,以便我可以等待安装我的寻呼机?