我使用以下方法来保存和读取用户设置:
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);
}