Android片段在选项卡中相互重叠打开

Android片段在选项卡中相互重叠打开,android,android-fragments,tabs,android-viewpager,Android,Android Fragments,Tabs,Android Viewpager,所以我有一个FragmentPagerAdapter,它有4个不同的选项卡。每一个都会打开一个片段。getItem方法建立如下: @Override public Fragment getItem(int i) { switch (i) { case 0:{ return new FragmentOne(); } case 1:{ ret

所以我有一个
FragmentPagerAdapter
,它有4个不同的选项卡。每一个都会打开一个片段。
getItem
方法建立如下:

@Override
    public Fragment getItem(int i) {
        switch (i) {
            case 0:{
                return new FragmentOne();
            }
            case 1:{
                return new FragmentTwo();
            }
            case 2:{
                return new FragmentThree();
            }
            case 3:{
                return new FragmentFour();
            }
            default:
                return null;
        }
    }
public Fragment getItem(int i) {
Fragment fragment = null;
switch (i) {
    case 0:
        fragment = new FragmentOne();
        break;
    case 1
        fragment =  new FragmentTwo();
    break;
    case 2:
        fragment =  new FragmentThree();
        break;
    case 3:
        fragment =  new FragmentFour();
        break;
return fragment;
}
但是,尽管没有抛出错误,但它不会正确显示。第一个选项卡有四个
片段
,其余三个选项卡为空

是什么导致了这个问题


提前谢谢你的帮助

您可以添加忘记的break steatement或使用此代码执行工作:

    @Override
public Fragment getItem(int i) {
    Fragment fragment = null;
    if (i == 0) {
        fragment = new FragmentOne();
    } else if (i == 1) {
        fragment = new FragmentTwo();
    } else if (i == 2) {
        fragment = new FragmentThree();
    } else if (i == 3) {
        fragment = new FragmentFour();
    }
    return fragment;
}
或者通过添加中断语句,如下所示:

@Override
    public Fragment getItem(int i) {
        switch (i) {
            case 0:{
                return new FragmentOne();
            }
            case 1:{
                return new FragmentTwo();
            }
            case 2:{
                return new FragmentThree();
            }
            case 3:{
                return new FragmentFour();
            }
            default:
                return null;
        }
    }
public Fragment getItem(int i) {
Fragment fragment = null;
switch (i) {
    case 0:
        fragment = new FragmentOne();
        break;
    case 1
        fragment =  new FragmentTwo();
    break;
    case 2:
        fragment =  new FragmentThree();
        break;
    case 3:
        fragment =  new FragmentFour();
        break;
return fragment;
}

祝你好运..

那只是条件句代替了这个例子…不,我的朋友。。它将替换switch语句,并仅在索引适当时创建片段,而不是在每个“case”中创建片段的OP代码!!。。。只是因为他忘记了break语句。。。否则,他的代码是好的,开关应该是最好的,谢谢你的回答!不幸的是,这并没有解决我的问题。这似乎产生了同样的结果。在片段中,会有什么吗?为每个案例添加break语句。。我相信这会解决你的问题