简体   繁体   English

如何从SharedPreferences获取价值?

[英]how to get value from SharedPreferences?

I have been making application which uses Preferences. 我一直在制作使用首选项的应用程序。 I have following PreferenceActivity: 我有以下PreferenceActivity:

public class PreferencesActivity extends PreferenceActivity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.addPreferencesFromResource(R.xml.prefences);

        PreferenceManager.setDefaultValues(this, R.xml.prefences, true);
    }
}

also I have following preferences.xml: 我也有以下preferences.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <EditTextPreference android:key="device_id" android:title="Device ID"/>
    <ListPreference android:key="update_time" android:entries="@array/update_keys" android:entryValues="@array/update_values" android:title="Update time" android:defaultValue="28800000"/>
</PreferenceScreen>

and I try to get values from SharedPreferences in onCreate() method my main Activity: 我尝试从我的主要活动onCreate()方法中的SharedPreferences获取值:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    initializeOtherElements();

    SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    Log.e("key", String.valueOf(prefs.getString("device_id", "1")));
}

I have added PreferencesActivity into manifest. 我已将PreferencesActivity添加到清单中。 But I see "1" in Log always. 但是我总是在Log中看到“ 1”。 Where have I made a mistake? 我在哪里弄错了?

You always see 1 in the log because you have mentioned "1" as the default value to return if "device_id" preference haven't been set. 您始终在日志中看到1,因为您提到“ 1”作为默认值,如果尚未设置“ device_id”首选项,则返回默认值。 If you set the "device_id" preference to say ABC, ABC will be returned. 如果将“ device_id”首选项设置为说ABC,则将返回ABC。 If you haven't set "device_id" "1" will be returned. 如果您尚未设置“ device_id”,则将返回“ 1”。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM