Android 以编程方式设置首选项的defaultValue
我有一个Android 以编程方式设置首选项的defaultValue,android,Android,我有一个EditTextPreference,需要保留一个电话号码。我希望通过编程将此首选项默认为手机的电话号码,因此我不能使用XML属性android:defaultValue。我该怎么做呢?下面是我正在尝试的,但默认值仍然显示为空: public class SettingsActivity extends PreferenceActivity { @Override protected void onPostCreate(Bundle savedInstanceState)
EditTextPreference
,需要保留一个电话号码。我希望通过编程将此首选项默认为手机的电话号码,因此我不能使用XML属性android:defaultValue
。我该怎么做呢?下面是我正在尝试的,但默认值仍然显示为空:
public class SettingsActivity extends PreferenceActivity
{
@Override
protected void onPostCreate(Bundle savedInstanceState)
{
super.onPostCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_general);
TelephonyManager tMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String number = tMgr.getLine1Number();
((EditTextPreference)findPreference("phone_number")).setDefaultValue(number);
}
我通过在首选项的OnPreferenceChangeListener的onPreferenceChange方法中设置值来解决这个问题:
OnPreferenceChangeListener sBindPreferenceSummaryToValueListener = new OnPreferenceChangeListener()
{
@Override
public boolean onPreferenceChange(Preference preference, Object value)
{
String stringValue = value.toString();
if (preference.getKey().equals(PREFS_KEY_PHONE_NUMBER))
{
if (TextUtils.isEmpty(stringValue))
{
TelephonyManager tMgr = (TelephonyManager)activity.getSystemService(Context.TELEPHONY_SERVICE);
stringValue = tMgr.getLine1Number();
((EditTextPreference)preference).setText(stringValue);
preference.setSummary(stringValue);
return false;
}
}
}
}
您是否尝试过使用-->onSetInitialValue(布尔恢复值,对象默认值)??我将如何做到这一点?我刚试过,但从来没有人打过电话。