2013-12-11 16 views
0

我使用這個方法來獲取SharedPreferences被編程設置:保持定製SharedPreferences和喜好從的prefs.xml在同一個地方

public static SharedPreferences getPrefs(final Context context) { 
    return context.getSharedPreferences(context.getPackageName() 
      + "_preferences", Context.MODE_WORLD_READABLE); 
} 

我也在我PreferenceActivity像使用prefs.xml

addPreferencesFromResource(R.xml.prefs); 

我想所有的應用程序偏好儲存在同一個地方(最好是:context.getPackageName() + "_preferences")),我該怎麼做呢?

+0

你爲什麼想這樣做?我也認爲'context.getSharedPreferences(context.getPackageName()+「_preferences」,Context.MODE_WORLD_READABLE);'會以無文檔的方式返回默認的共享首選項 –

+0

我正在設置一個監聽器,並且想比較第一個共享首選項集和第二組(即基於'prefs.xml')。我應該將所有的偏好設置存儲在默認的共享偏好設置中嗎? – syntagma

回答

1

您爲共享首選項文件選擇的名稱是默認共享首選項文件的名稱 - 這最終會導致錯誤。偏好片段文檔says

這些首選項將在用戶與它們交互時自動保存到SharedPreferences。要檢索此活動中首選層次結構將使用的SharedPreferences實例,請使用與此活動相同的包中的上下文調用getDefaultSharedPreferences(android.content.Context)。

您加載偏好設置的xml與它們保存的xml無關。

因此,使用getDefaultSharedPreferences()不惹共享偏好的文件名,讀援引Java文檔(適用於PreferenceActivity更多或更少),並看看: