2015-07-21 78 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

我的不好,我誤解了這個問題.. –

相關問題