首页 文章

具有两个SharedPreferences的PreferenceActivity

提问于
浏览
0

如何创建可以在两个不同的共享首选项中保存值的首选项屏幕?

例如,在我的PreferenceActivity中,我的第一个偏好是CheckBoxPreference . 复选框的状态保存在“user_86_Prefs”sharedPreferences中,第二个首选项是ListPreference,所选项目的状态保存在“devicePrefs”sharedPreference中 .

在我的PreferenceFragment中,我只能这样做

getPreferenceManager().setSharedPreferencesName("user_86_Prefs");

实际上,名为“user_86_Prefs”的sharedPreference特定于应用程序上连接的用户,“devicePrefs”特定于设备 .

我应该创建另一个扩展PreferenceFragment的类,并将特定于该设备的首选项放入其中吗?如果是,我怎样才能在同一个Activity中拥有我的两个preferencesFragments?

谢谢

1 回答

  • 0

    一种方法是创建一个类来处理您的所有偏好 .

    public class MySharedPreferences{
    
        private static final String USER_PREF = "user_shared_pref";
        private static final String DEVICE_PREF = "device_shared_pref";
    
        private static SharedPreferences getSharedPreferences(Context ctx){
            return PreferenceManager.getDefaultSharedPreferences(ctx);
        }
    
        public static void setUserPref(Context ctx,String user_pref){
            Editor editor = getSharedPreferences(ctx).edit();
            editor.putString(USER_PREF,user_pref);
            editor.apply();
        }
    
        public static String getUserPref(Context ctx){
            return getSharedPreferences(ctx).getString(USER_PREF,"");
        }
    }
    

    您的设备首选项也是如此!你需要做类似的事情来从其他类/活动/片段访问它:

    MySharedPreferences.setUserPref(this /* or whatever your context is*/,yourValue);
    

相关问题