设置共享首选项默认值



我使用以下方法来保存和读取用户设置:

private void saveUserSettings(){
SharedPreferences userSettings = getSharedPreferences("userSettings", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = userSettings.edit();
editor.putInt("timeOne",timeOne);
editor.apply();
}
private int getUserSettings(){
SharedPreferences userSettings = getSharedPreferences("userSettings", Context.MODE_PRIVATE);
timeOne = userSettings.getInt("timeOne",timeOne);       
}

然后在创建以下内容:

SharedPreferences prefs = getSharedPreferences("userSettings", Context.MODE_PRIVATE);

这很好,当应用程序重新启动时,数据将被保存。但是,我希望在最初安装应用程序时拥有默认数据,似乎这些值应该存储在 xml 文件中。

我在res/xml/preferences下创建了以下文件.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
android:key="timeOne"
android:defaultValue="2"/>
</PreferenceScreen>

然后在创建中:

PreferenceManager.setDefaultValues(this, R.xml.preferences, false);

我将"用户设置"更改为首选项以匹配,但这不起作用并返回零值。这种读取xml文件的方法是否正常或/并且我忽略了某些内容?

我认为你把自己复杂化了。

在此说明中,如果没有具有该名称的共享首选项,则默认使用第二个参数。

您只需将该值设置为所需的默认值即可。

timeOne = userSettings.getInt("timeOne",<Put here the default value>);

编辑一

假设这是应用程序第一次运行并且尚未保存设置,则默认值为 2。

读取值的方法应该是这样的。

private int getUserSettings(){
SharedPreferences userSettings = getSharedPreferences("userSettings", Context.MODE_PRIVATE);
timeOne = userSettings.getInt("timeOne",2);       
}

相关内容

  • 没有找到相关文章

最新更新