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

Raf*_*l T 4 android preferences sharedpreferences android-activity

如果我有Preference-Activity-Fragment我可以提供preference.xml文件来构建我的文件PreferenceScreen并通过显示addPreferenceFromResource(R.xml.preference)

然后可以通过以下方式检索更改的值 PreferenceManager.getDefaultSharedPreferences(Context)

我只是想知道是否可以将片段的默认首选项设置为默认值。

我希望有一个PreferenceFragment能够将其首选项(通过xml提供)存储在我可以通过context.getSharedPreferences("customPrefName", Context.MODE_PRIVATE) 但可以在xml中找到的东西(例如,可以通过xml提供)中

<PreferenceScreen android:prefName="customPrefName">...
Run Code Online (Sandbox Code Playgroud)

abh*_*esh 6

如果要具有自定义首选项xml文件,则需要设置首选项名称,然后再将其从PreferenceFragment类的xml添加到屏幕。

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
    }
}
Run Code Online (Sandbox Code Playgroud)

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