我有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);
}
答案 0 :(得分:0)
我通过在Preference的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;
}
}
}
}