2015-07-21 26 views
0

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

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

在我PreferenceFragment我只能做

getPreferenceManager().setSharedPreferencesName("user_86_Prefs"); 

其实名为“user_86_Prefs”的sharedPreference是特定于连接的应用程序的用户,而“devicePrefs”是特定于设备。

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

感谢

这样做是创建在你处理所有你的喜好至极的一类

回答

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); 
+0

几个用户可以连接到smarpthone,我有每个用户的偏好:user_86_Prefs,user_87_Prefs,user_42_Prefs,user_24_Prefs,等user_86_Prefs例如不是一个字符串,它是一个sharedPreference其中包含strings/int/...所以我需要为设备本身创建另一个sharedpreference,它收集与智能手机相关的首选项。 – psv

+0

我的不好,我误解了这个问题.. –

相关问题