如何"remember" 上次访问的tabFragment 并在Resume 上打开它?

How to "remember" last visited tabFragment and open it onResume?

我有使用 TabLayout 和 ViewPager 的应用程序。

我让它运行顺畅,很好,但让我困扰的是,当我从选项卡打开 activity 时,我想在下次 return 时打开相同的选项卡] 回到那个 activity.

使用 SharedPreferences 生成我需要的内容的最佳做法是什么?

据我所知:

private SharedPreferences prefs;
private String LAST_TAB = "last_tab";

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    prefs = this.getSharedPreferences("com.myapp", Context.MODE_PRIVATE);
}

@Override
public void onResume() {
    int selTab = prefs.getInt(LAST_TAB, 0);
    /* TODO: How do I procrammatically select tab? */

}

private void setTab() {
    TabLayout tabLayout = (TabLayout)findViewById(R.id.myTabs);

    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            int selTab = tab.getPosition();

            viewPager.setCurrentItem(selTab);
            SharedPreferences.Editor editor = prefs.edit();
            editor.putInt(LAST_TAB, selTab);
            editor.apply();
        }

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

        }    

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

        }    
    });
}

如果你的数据是持久的,那么你可以使用 SharedPreferences,否则如果你只需要在应用程序 运行 时访问数据,你可以将它存储在一些变量中,比如:

selectedTabIndex // set this value from sharedpreference
TabLayout.Tab selectedTab = tabLayout.getTabAt(selectedTabIndex);
selectedTab.select();