我已经实现了onPreferenceClick(Preference)回调接口
public boolean onPreferenceClick(Preference arg0) {
if (arg0 instanceof ListPreference){
addListPreferenceEntriesFromStore((ListPreference) arg0, getSharedPreferences("cfn_preferences", MODE_PRIVATE));
}
else if (arg0 instanceof EditTextPreference){
((EditTextPreference)arg0).setTitle("Hallabalooo");
((EditTextPreference)arg0).setDialogTitle("Tjillevipp");
}
return true;
}
当我第一次点击EditTextPreference时,PreferenceScreen中的标题按预期更改,但对话框标题不是。第二次点击EditTextPreference时,对话框标题也会更新。
我遇到了与ListPreference相同的行为。 addListPreferenceEntriesFromStore()方法更新ListPreference的内容,但是第一次显示ListPreference时,更改不可见。
似乎在onPreferenceClick()回调的上下文中对首选项的对话框部分所做的更改未显示。
我在这里做错了什么?或者有解决方法吗?
感谢任何帮助
/的Mathias
答案 0 :(得分:0)
我找到了一个适合我的解决方案。诀窍是更新onPreferenceChange中的Preference对象。
首先,确保您在班级中引用了Preference对象。
私人EditTextPreference myPreference;
然后为onPreferenceChange添加一个监听器。在离开方法之前,使用新值更新对象。我认为问题是这个对话框中没有设置新值。
public boolean onPreferenceChange(Preference preference,Object objValue){
if (preference == myPreference) {
// other stuff you need to do <here>
myPreference.setText((String)objValue);
return false; // don't update pref value
}
return true;
}