我使用以下方法来保存和读取用户设置:
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);
}
然后在onCreate中创建以下内容:
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>
然后在onCreate:
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
我将“userSettings”更改为首选项以匹配,但这不起作用并返回零值。这种读取xml文件的方法是ok还是/我是否忽略了什么?
答案 0 :(得分:1)
我认为你过于复杂了。
在此说明中,如果没有具有该名称的共享首选项,则第二个参数是默认使用。
您只需将该值设置为您需要的默认值。
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);
}