我有使用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) {
}
});
}
答案 0 :(得分:2)
如果您的数据是持久性的,那么您可以使用SharedPreferences,否则如果您只需要在应用程序运行时访问数据,则可以将其存储在某个变量中,例如:
selectedTabIndex // set this value from sharedpreference
TabLayout.Tab selectedTab = tabLayout.getTabAt(selectedTabIndex);
selectedTab.select();