点击时如何更改首选项对话框的内容?

时间:2010-09-14 12:05:57

标签: android

我已经实现了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

1 个答案:

答案 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;
}