android片段的两个不同声明

时间:2014-06-29 01:09:30

标签: android android-fragments

我创建了一个片段类Fragment1,当尝试从主活动中调用它时,它会显示如下错误

Fragment1 don= new Fragment1();
@Override
public Fragment getItem(int position) {
    return don;
}

但是当我这样做时它完美无缺

@Override
public Fragment getItem(int position) {
    return (new Fragment1());
}

有人可以向我解释为什么会发生这种情况吗?

显示此错误消息

06-28 20:50:41.111: E/AndroidRuntime(1282): FATAL EXCEPTION: main
06-28 20:50:41.111: E/AndroidRuntime(1282): Process: com.abdelhadi.dontcha, PID: 1282
06-28 20:50:41.111: E/AndroidRuntime(1282): java.lang.IllegalStateException: Can't      change tag of fragment EditorChoice{b4db6930 id=0x7f05003c android:switcher:2131034172:0}: was android:switcher:2131034172:0 now android:switcher:2131034172:1
06-28 20:50:41.111: E/AndroidRuntime(1282):     at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:398)
06-28 20:50:41.111: E/AndroidRuntime(1282):     at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:389)
06-28 20:50:41.111: E/AndroidRuntime(1282):     at        android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:99)

1 个答案:

答案 0 :(得分:0)

我会说你的片段适配器getsize()返回一个大于1的数字,这样你就会为所有不可能的片段返回相同的实例。