重新选择选项卡时片段为空白

Fragment is blank when the tab is reselected

最初片段returns第一个和第二个选项卡对应的列表视图。但是 returns 第三个选项卡的空片段。当我 select 时,第一个选项卡再次显示空片段。列表适配器没问题 .当我在第二个选项卡中设置适配器时,它工作正常。问题出在 Mainactivity 和 Fragment

主要活动

public class SwipemainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener
{
private TextView displayTextView;
public static SwipemainActivity instance;

TabLayout tabLayout;
ViewPager viewPager;
Context context;
FragmentAdapterClass fragmentAdapter;

public static Context getInstance() {
    return instance;
}

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_swipemain);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    instance = this;

    tabLayout = (TabLayout) findViewById(R.id.tabs);
    viewPager = (ViewPager) findViewById(R.id.viewpager);

    setSupportActionBar(toolbar);

    tabLayout.addTab(tabLayout.newTab().setText("NEW"));
    tabLayout.addTab(tabLayout.newTab().setText("CONFIRMED"));
    tabLayout.addTab(tabLayout.newTab().setText("FINISHED"));

    fragmentAdapter = new FragmentAdapterClass(getSupportFragmentManager(), tabLayout.getTabCount());

    viewPager.setAdapter(fragmentAdapter);

    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));

    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab LayoutTab) {

            viewPager.setCurrentItem(LayoutTab.getPosition());
        }


        @Override
        public void onTabUnselected(TabLayout.Tab LayoutTab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab LayoutTab) {

        }
    });
}
  }

片段

public class FragmentAdapterClass extends FragmentStatePagerAdapter {

int TabCount;

public FragmentAdapterClass(FragmentManager fragmentManager, int CountTabs) {
    super(fragmentManager);

    this.TabCount = CountTabs;

}

@Override
public Fragment getItem(int position) {

    switch (position) {

        case 0:
            Tab1 tab1 = new Tab1();
            return tab1;

        case 1:
            Tab2 tab2 = new Tab2();
            return tab2;

        case 2:
            Tab3 tab3 = new Tab3();
            return tab3;

        default:

        return null;
    }
}

@Override
public int getCount() {
    return TabCount;
}

}

我从不使用此侦听器来更改 viewpager 片段。并使用 setOffScreenPageLimit 告诉 viewpager 需要在内存中保存多少片段。这就是我总是使用 tabbedlayout 和 viewpager 设置片段的方式。

viewPager.setOffscreenPageLimit(AMOUNT_OF_FRAGMENTS);