Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式设置首选项的defaultValue_Android - Fatal编程技术网

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(布尔恢复值,对象默认值)??我将如何做到这一点?我刚试过,但从来没有人打过电话。