Android如何从SharedPreference设置EditTextPreference的默认值?
这一次在同一个项目中我面临一个稍微具有挑战性的问题,在res / xml文件夹中的settings.xml文件中:
并在类文件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); } }
好的,我明白了:
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
)数据在按下时弹出的对话框中。
希望其他人现在或将来阅读此内容(但过去的内容?)会从这一发现中受益。
干杯!
首先,设置EditTextPreference
的默认值。 该值将存储为String
类型。 例如:
然后,在应用程序活动首先启动的活动中应用默认值(首次安装后)。 例如,在MainActivity
的onCreate()
方法中:
PreferenceManager.setDefaultValue(this, R.xml.settings, false);
您所要做的就是使用sharedPreferences.getString()然后使用editext.setText()。