片段是否有效?

时间:2016-03-15 10:05:43

标签: android android-fragments android-fragmentactivity fragmentmanager

我们有一个使用片段的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 ......你对这里发生的事情有任何想法吗?

提前致谢。

0 个答案:

没有答案