2014-04-19 99 views
2

我使用此代碼使用getText()方法從輸入文本中設置editTextPreference標題。問題是,當我點擊「確定」它不改變標題,但如果我再次點擊editText`並點擊「確定」,它將應用標題。動態設置EditTextPreference標題

public void handleTEST(){ 
    final EditTextPreference pref = (EditTextPreference)findPreference("test");  
    pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener(){ 
     @Override 
     public boolean onPreferenceClick(Preference preference) { 
      pref.setTitle(pref.getText()); 

      return true; 
     } 
    }); 

} 

怎麼了?

回答

1

問題在於,您只更改標題onPreferenceClick,而不是Preference Changed(好的是clickedDialog)。所以下次當您點擊偏好項目onPreferenceClick被調用並且標題改變時。

如果您需要更改標題,當好Clicked在dialog.You需要更新editTextPreference稱號OnPreferenceChangeListener

添加OnPreferenceChangeListener和更新EditTextPreference標題這樣

private static Preference.OnPreferenceChangeListener onPreferenceChangeListener 
         = new Preference.OnPreferenceChangeListener() { 
    @Override 
    public boolean onPreferenceChange(Preference preference, Object value) { 
     String stringValue = value.toString(); 

     if(preference instanceof EditTextPreference) { 
      // update the title 
      preference.setTitle(stringValue); 

     } 
     return true; 
    } 
    };