0

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

        }    
    });
}
4

1 回答 1

2

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

selectedTabIndex // set this value from sharedpreference
TabLayout.Tab selectedTab = tabLayout.getTabAt(selectedTabIndex);
selectedTab.select();
于 2015-08-24T21:15:59.817 回答