如何从SharedPreferences获得价值?

时间:2012-01-12 15:56:58

标签: java android

我一直在制作使用偏好设置的应用程序。我有以下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);
    }
}

我也有以下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>

我尝试从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")));
}

我已将PreferencesActivity添加到清单中。但我总是在Log中看到“1”。我在哪里弄错了?

1 个答案:

答案 0 :(得分:0)

您总是在日志中看到1,因为如果尚未设置“device_id”首选项,则提及“1”作为返回的默认值。如果将“device_id”首选项设置为ABC,则将返回ABC。如果您尚未设置“device_id”,则将返回“1”。