2013-09-25 27 views
3

我有一個需要保存電話號碼的EditTextPreference。我想以編程方式將此首選項默認設置爲手機的電話號碼,因此我無法使用XML屬性android:defaultValue。我會如何去做這件事?這裏就是我想,但默認值仍顯示爲空:以編程方式爲首選項設置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

你嘗試使用 - > onSetInitialValue(boolean restoreValue,Object defaultValue)?? – bofredo

+0

我該怎麼做?我只是嘗試過,但它永遠不會被調用。 – ashishduh

回答

0

我通過在偏好的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; 
       } 
      } 
     } 
    } 
相關問題