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

8
如果我有一个Preference-Activity-Fragment,我可以提供一个preference.xml文件来构建我的PreferenceScreen,并通过addPreferenceFromResource(R.xml.preference)显示它。
然后可以通过PreferenceManager.getDefaultSharedPreferences(Context)获取更改后的值。
我只是想知道是否可能为我的Fragment选择除默认Preferences之外的其他Preferences。
我想要一个能够将其偏好(通过xml提供)存储在我可以通过context.getSharedPreferences("customPrefName", Context.MODE_PRIVATE)检索的Preferences中的PreferenceFragment。 但是我在xml中找不到类似的东西。
<PreferenceScreen android:prefName="customPrefName">...
1个回答

17

如果你想要一个自定义的偏好设置 XML 文件,你需要在将其从 XML 添加到屏幕之前,在你的 PreferenceFragment 类中设置偏好设置名称。

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
    }
}

注意:在调用addPreferencesFromResource()方法之前,在onCreate()的super调用后设置共享首选项名称。


谢谢,虽然它有点像黑客行为,但它足够好用。 - Rafael T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接