3

我有一个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);
    }
4

1 回答 1

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;
                }
            }
        }
    }
于 2013-09-30T16:54:33.703 回答