我使用此代码通过getText()方法从输入文本设置editTextPreference标题。问题是,当我单击"ok“时,它不会更改标题,但如果我再次单击editText`并单击"ok",它就会应用标题。
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;
}
});
}怎么了?
发布于 2014-04-21 12:33:04
问题是您只在onPreferenceClick中更改标题,而不是在Preference Changed时更改(Dialog中的Ok is clicked )。因此,下次单击preference item时,将调用onPreferenceClick并更改标题。
如果在dialog.You上Ok Clicked时需要更改标题,则需要在OnPreferenceChangeListener中更新editTextPreference标题
添加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;
}
}; https://stackoverflow.com/questions/23176268
复制相似问题