0

У меня есть приложение, использующее TabLayout и ViewPager.Как «запомнить» последний посетивший tabFragment и открыть его onResume?

Я получил работу гладкой и красивой, но то, что меня беспокоит, заключается в том, что когда я открываю активность из вкладок, я бы хотел открыть одну и ту же вкладку в следующий раз, когда вернусь к этой активности.

Какая наилучшая практика для создания того, что мне нужно, используя 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) { 

     }  
    }); 
} 

ответ

2

Если данные настойчив, то вы можете использовать SharedPreferences, иначе, если вам нужно получить доступ к данным только в то время как приложение работает, вы можете хранить его в некоторых переменная, что-то вроде:

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

Отлично. Я использовал это, и он работал, как ожидалось. благодаря – EspeH