在PreferenceActivity

时间:2018-07-09 12:00:26

标签: android header sharedpreferences preferenceactivity preferencefragment

我正在从preferences.xml加载PreferenceActivity(Preferences.java)。在此PreferenceActivity中更改的所有值都将保存在XML文件packagename_preferences.xml

packagename_preferences.xml是默认的共享首选项文件。

现在,我想从其他XML文件中加载值,可以说在同一PreferenceActivity(Preferences.java)中使用mode1_preferences.xml或mode2_preferences.xml或mode3_preferences.xml。此模式将取决于用户。 因此,布局保持不变,但值集不同。

我在PreferenceActivity的onCreate中使用了以下代码

PreferenceManager prefMgr = getPreferenceManager();
prefMgr.setSharedPreferencesName("myPref1");
addPreferencesFromResource(R.xml.preferences);

但是,getPreferenceManager()返回NULL

如何在PreferenceActivity中加载其他XML值文件?

1 个答案:

答案 0 :(得分:0)

您可以使用以下方法。如果将null""(空字符串)作为类型,则会得到默认的共享首选项xml。

public SharedPreferences getSharedPreferences(Context context, String type) {
    String sharedPreferenceName = type == null  ||  type.isEmpty()
                    ? context.getPackageName() + "_preferences" 
                    : type;

    return SharedPreferences sharedPreferences = getSharedPreferences(sharedPreferenceName,
                    Context.MODE_PRIVATE);
}