从 PreferenceActivity 或 PreferenceFragment 中的资源添加特定命名的 SharedPreferences

add specific named SharedPreferences from resource in PreferenceActivity or PreferenceFragment

如果我有 Preference-Activity-Fragment,我可以提供一个 preference.xml 文件来构建我的 PreferenceScreen 并通过 addPreferenceFromResource(R.xml.preference)[=17 显示它=]

然后可以通过 PreferenceManager.getDefaultSharedPreferences(Context)

检索更改的值

我只是想知道是否可以为我的 Fragment 使用默认首选项以外的选项。

我想要一个能够在我可以通过 context.getSharedPreferences("customPrefName", Context.MODE_PRIVATE) 检索的首选项中存储其首选项(通过 xml 提供)的 PreferenceFragment 但我在 xml 中找不到像

这样的东西
<PreferenceScreen android:prefName="customPrefName">...

如果您想要自定义首选项 xml 文件,您需要在将首选项名称从 xml 添加到您的 PreferenceFragment class.[=11= 中的屏幕之前设置首选项名称]

public class CustomNamePreferenceFragment extends PreferenceFragment {

    private static final String PREF_FILE_NAME = "custom_name_xml";

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        PreferenceManager preferenceManager = getPreferenceManager();
        preferenceManager.setSharedPreferencesName(PREF_FILE_NAME);
        addPreferencesFromResource(R.xml.prefs);
        ... //rest of the code
    }
}

注意:您需要在超级调用 onCreate() 之后和调用 addPreferencesFromResource() 方法之前设置共享首选项名称。