设置sharedpreferences默认值

时间:2017-07-31 22:22:27

标签: android

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

    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还是/我是否忽略了什么?

1 个答案:

答案 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);       
}