Android如何从SharedPreference设置EditTextPreference的默认值?
Android how to set default value of EditTextPreference from SharedPreference?
这次在同一个项目中,我面临一个稍微具有挑战性的问题,在 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="" />
并在 class 文件中 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
设置为分别存储在SharedPreferences
中的weight
和age
现在,我该怎么做呢?
编辑:提供了使用 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);
}
}
首先,设置EditTextPreference
的默认值。该值将存储为 String
类型。例如:
<EditTextPreference
android:key="weight"
android:defaultValue="enter your value (54)"
... />
<EditTextPreference
android:key="age"
android:defaultValue="enter your value"
... />
然后,应用 activity 中的默认值,您的应用程序 activity 首先启动(首先安装)。例如,在 MainActivity
的 onCreate()
方法中:
PreferenceManager.setDefaultValue(this, R.xml.settings, false);
您只需使用 sharedPreferences.getString() 然后使用 editext.setText() 即可。
好的伙计们,我明白了:
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
' 中保存的键(在本例中为 WeightAndAgeStorage
的 weight
和 age
)数据按下时弹出的对话框。
希望现在或将来(但过去呢?)阅读本文的任何人都能从这一发现中受益。
干杯!
这次在同一个项目中,我面临一个稍微具有挑战性的问题,在 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="" />
并在 class 文件中 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
设置为分别存储在SharedPreferences
中的weight
和age
现在,我该怎么做呢?
编辑:提供了使用 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);
}
}
首先,设置EditTextPreference
的默认值。该值将存储为 String
类型。例如:
<EditTextPreference
android:key="weight"
android:defaultValue="enter your value (54)"
... />
<EditTextPreference
android:key="age"
android:defaultValue="enter your value"
... />
然后,应用 activity 中的默认值,您的应用程序 activity 首先启动(首先安装)。例如,在 MainActivity
的 onCreate()
方法中:
PreferenceManager.setDefaultValue(this, R.xml.settings, false);
您只需使用 sharedPreferences.getString() 然后使用 editext.setText() 即可。
好的伙计们,我明白了:
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
' 中保存的键(在本例中为 WeightAndAgeStorage
的 weight
和 age
)数据按下时弹出的对话框。
希望现在或将来(但过去呢?)阅读本文的任何人都能从这一发现中受益。
干杯!