我们有一个使用片段的Android应用程序。一切都很好但是,很少发生崩溃,而且我还没有能够复制。 错误说:
致命异常:java.lang.RuntimeException无法启动活动 ComponentInfo {... / ... Activity}:java.lang.IllegalStateException: 片段已经激活
android.support.v4.app.Fragment.setArguments(Fragment.java:551)
崩溃线上的代码是:
Fragment fragment;
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch(IllegalAccessException ex) {
fragment = null;
} catch(InstantiationException ex) {
fragment = null;
}
if(fragment != null) {
if(args != null) fragment.setArguments(args);
final FragmentTransaction ft = mFragmentManager.beginTransaction();
ft.replace(mFrameLayoutResource, fragment, fragmentTAG);
ft.commitAllowingStateLoss();
}
正如您所看到的,崩溃发生在setArguments上,但我还没有能够重现它,我甚至不明白我的代码有什么问题。片段是否有效?如何在设置参数之前知道我的片段是否处于活动状态,以避免崩溃?
问题应该是android的片段代码:
public void setArguments(Bundle args) {
if (mIndex >= 0) {
throw new IllegalStateException("Fragment already active");
}
mArguments = args;
}
但是我不明白为什么mIndex在我的情况下大于或等于0 ......你对这里发生的事情有任何想法吗?
提前致谢。