Android fragments 将片段中的SharedReference设置为选项卡

Android fragments 将片段中的SharedReference设置为选项卡,android-fragments,tabs,sharedpreferences,Android Fragments,Tabs,Sharedpreferences,我对SharedReferences的一个简单用法有疑问 目标:我有一个ActionBar/Tab应用程序,其中有一个MainActivity和4个选项卡作为滑动片段。我希望应用程序记住最后一个用户选择的选项卡,以便在应用程序的下一次启动时,它默认为该选项卡 每个片段中的代码(在onCreateView方法中): 其中“tabPref”,0是pref的名称和选项卡的编号(0-3) 在MainActivity中,我使用以下命令读取首选项并设置启动应用程序时的默认选项卡(在onCreate中): 但

我对SharedReferences的一个简单用法有疑问

目标:我有一个ActionBar/Tab应用程序,其中有一个MainActivity和4个选项卡作为滑动片段。我希望应用程序记住最后一个用户选择的选项卡,以便在应用程序的下一次启动时,它默认为该选项卡

每个片段中的代码(在onCreateView方法中):

其中
“tabPref”,0
是pref的名称和选项卡的编号(0-3)

在MainActivity中,我使用以下命令读取首选项并设置启动应用程序时的默认选项卡(在onCreate中):

但是,我设置了一些非常奇怪的首选项,这些首选项与选项卡的选择不一致(例如,选项卡4甚至没有设置首选项,选项卡1-3随机设置整数0、1、2或3-我正在使用System.Outs查看发生了什么)

我是否遗漏了一些没有正确设置SharedReference的片段生命周期的基本信息


谢谢……

解决了:我需要在MainActivity的OnPageChangeListener类中设置SharedReference,而不是在片段(doh!)中

SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit().putInt("tabPref", 0);
editor.apply();
SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);
Integer tabPref = prefs.getInt("tabPref", 99);
mViewPager.setCurrentItem(tabPref, false);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            actionBar.setSelectedNavigationItem(position);
            SharedPreferences.Editor editor = prefs.edit().putInt("tabPref", position);
            editor.apply();
        }
});