Android如何从SharedPreference设置EditTextPreference的默认值?

时间:2015-02-07 14:37:38

标签: java android sharedpreferences edittextpreference

这一次在同一个项目中我遇到了一个稍微具有挑战性的问题,在res / xml文件夹的settings.xml文件中:

<EditTextPreference
    android:key="weight" 
    android:title="@string/update_user_weight"
    android:persistent="true"
    android:dialogTitle="@string/update_user_weight"
    android:dialogMessage="@string/update_user_weight_message"
    android:defaultValue="" />

<EditTextPreference
    android:key="age"
    android:title="@string/update_user_age"
    android:persistent="true"
    android:dialogTitle="@string/update_user_age"
    android:dialogMessage="@string/update_user_age_message"
    android:defaultValue="" />

并在类文件UserData.java中:

SharedPreferences storeWeightAndAge = getSharedPreferences("WeightAndAgeStorage", Context.MODE_PRIVATE);
Editor store = storeWeightAndAge.edit();
store.putString("weight", weightData);
store.putString("age", ageData);
store.commit();

我在这里要做的是将上述两个EditTextPreferences'android:defaultValue分别设置为weight中存储的ageSharedPreferences

现在,我该如何做呢?

编辑:提供了使用settings.xml文件的Settings.java文件:

package com.example.drinkup;

import android.content.SharedPreferences;
import android.os.*;
import android.preference.PreferenceFragment;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;

public class Settings extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);



    }

}

3 个答案:

答案 0 :(得分:3)

好的伙计们,我明白了:

import android.preference.EditTextPreference;

public class Settings extends PreferenceActivity {


    EditTextPreference weightEditTextPreference;
    EditTextPreference ageEditTextPreference;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);

        weightEditTextPreference = (EditTextPreference)findPreference("weight");
        ageEditTextPreference = (EditTextPreference)findPreference("age");

        SharedPreferences getWeightAndAgeStore = getSharedPreferences("weightAndAgeStorage", Context.MODE_PRIVATE);
        weightEditTextPreference.setText(getWeightAndAgeStore.getString("weight", "0"));
        ageEditTextPreference.setText(getWeightAndAgeStore.getString("age", "0"));

这样做是因为它将EditText框设置为SharedPreferences&#39;保存的密钥(在本例中为weightage的{​​{1}})数据在您按下时弹出的对话框中。

希望其他人现在或将来阅读此内容(但过去的内容?)会从这一发现中受益。

干杯!

答案 1 :(得分:2)

首先,设置EditTextPreference的默认值。该值将存储为String类型。例如:

<EditTextPreference
    android:key="weight"
    android:defaultValue="enter your value (54)"
    ... />

<EditTextPreference
    android:key="age"
    android:defaultValue="enter your value"
    ... />

然后,在应用程序活动首先启动的活动中应用默认值(首次安装后)。例如,在MainActivity&#39; onCreate()方法中:

PreferenceManager.setDefaultValue(this, R.xml.settings, false);

答案 2 :(得分:0)

您所要做的就是使用sharedPreferences.getString()然后使用editext.setText()。