2015-06-03 19 views
0

我遇到了我認爲是SharedPreferences簡單使用的問題!將Fragments中的SharedPreference設置爲Tabs

目的:我有一個帶有MainActivity的ActionBar/Tab應用程序和4個選項卡作爲滑動片段。我希望應用程序記住最後一個用戶選擇的選項卡,以便在應用程序的下一次啓動時,它默認使用該選項卡。

代碼中的每個片段(在onCreateView法):

SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = prefs.edit().putInt("tabPref", 0); 
editor.apply(); 

其中"tabPref", 0是選項卡(0-3)的PREF和號碼的名稱。

在MainActivity,我使用下面的閱讀偏好和設置默認選項卡上啓動應用程序(在的onCreate):

SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE); 
Integer tabPref = prefs.getInt("tabPref", 99); 
mViewPager.setCurrentItem(tabPref, false); 

但是,我得到了一些很奇怪的喜好是設置,不符合標籤的選擇(例如,表4甚至沒有設置首選項,標籤1-3隨機設置整數0,1,2或3 - 我使用System.Outs來查看發生了什麼)。

我是否錯過了關於不正確設置SharedPreference的片段的生命週期的基礎知識?

感謝....

回答

0

解決:我需要設置SharedPreferences在裏MainActivity的OnPageChangeListener類,而不是在片段(DOH!)。

mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
     @Override 
     public void onPageSelected(int position) { 
      actionBar.setSelectedNavigationItem(position); 
      SharedPreferences.Editor editor = prefs.edit().putInt("tabPref", position); 
      editor.apply(); 
     } 
});