如何“记住”上次访问tabFragment并在onResume上打开它?

时间:2015-08-24 20:58:29

标签: android android-activity android-viewpager sharedpreferences android-tablayout

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

我让它顺利而且很好地工作,但令我困扰的是,当我从标签打开活动时,我想在下次返回该活动时打开相同的标签。

使用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) {

        }    
    });
}

1 个答案:

答案 0 :(得分:2)

如果您的数据是持久性的,那么您可以使用SharedPreferences,否则如果您只需要在应用程序运行时访问数据,则可以将其存储在某个变量中,例如:

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