Android 每次我重新选择选项卡时,viewpager表格布局中的片段都会继续重新设置

Android 每次我重新选择选项卡时,viewpager表格布局中的片段都会继续重新设置,android,android-fragments,android-viewpager,android-tablayout,Android,Android Fragments,Android Viewpager,Android Tablayout,我有三个选项卡,当用户转到第三个选项卡,然后又回到第一个选项卡时,第一个选项卡中的内容不会重置,表单会继续重新加载 这是我的代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.scorespagemain); viewPager = (ViewPager) findView

我有三个选项卡,当用户转到第三个选项卡,然后又回到第一个选项卡时,第一个选项卡中的内容不会重置,表单会继续重新加载

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.scorespagemain);
    viewPager = (ViewPager) findViewById(R.id.viewPager);
    CAdapter cAdapter = new Adapter(getSupportFragmentManager(), ScoresPageMain.this);
    viewPager.setAdapter(cAdapter);
    tabLayout = (TabLayout) findViewById(R.id.tabsstuff);
    tabLayout.setupWithViewPager(viewPager);
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }
    });
}
}

CAdapter
class:

public class CAdapter extends FragmentPagerAdapter{
    String names[] = new String[] {"Top Teams", "Top Scores", "Top Players"};
    Context context;

    public CAdapter(FragmentManager fragmentManager, Context context){
        super(fragmentManager);
        this.context = context;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0:
                return new TopTeams();
            case 1:
                return new TopScores();
            case 2:
                return new TopPlayers();
            default:
                return null;
        }
    }

    @Override
    public int getCount() {
        return names.length;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return names[position];
    }
}

尝试在代码中使用
setOffscreenPageLimit()


希望这将对您有所帮助。

尝试在代码中使用
setOffscreenPageLimit()


希望这对您有所帮助。

使用-
mviewpage.setOffscreenPageLimit(int-pages)其中参数int表示要保留在内存中的页面数量不需要在tabUnSelected()和tabReSelected()中执行任何操作其中int参数表示要在内存中保留多少页不需要在tabUnSelected()和tabReSelected()中执行任何操作。我应该将其放在哪里?比如在什么类或方法中?在
viewPager.setAdapter(cAdapter)之后。在初始化选项卡适配器的活动类中使用
viewPager.setOffscreenPageLimit(2)
。哇,它可以工作-谢谢。请解释一下那一行是什么意思好吗?@LukazsPioetrszci读到这里,我把它放在哪里?比如在什么类或方法中?在
viewPager.setAdapter(cAdapter)之后。在初始化选项卡适配器的活动类中使用
viewPager.setOffscreenPageLimit(2)
。哇,它可以工作-谢谢。请解释一下这行代码的作用好吗?@LukazsPioetrszci读了这个