设置DialogPreference摘要OnPreferenceChange

时间:2013-08-27 18:42:19

标签: android

我有一个名为DialogPreference的{​​{1}}子类,它有两个用于用户名和密码的EditTexts,当我点击MyDialogPreference按钮时,我设置了一些这样的首选项:

DialogInterface.BUTTON_POSITIVE

我希望在调用DialogPreference的SettingsFragment中,每当我关闭MyDialogPreference时,我都可以将数据显示为Preference的摘要

以下是偏好的选择:

//I get userId from SQLite before this
SharedPreferences settings = this.getContext()
                .getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();

editor.putInt("userId", userId);
editor.commit();

我试图将此DialogPreference绑定到OnPreferenceChangeListener,但它没有用。

以下是代码:

    <Preference
        android:key="update"
        android:title="Update other preference" >
    </Preference>

    <com.cmr.MyDialogPreference
        android:key="userPassScreen"
        android:title="Login User" >
    </com.cmr.MyDialogPreference>

我有什么方法可以做到这一点吗?

PS。抱歉我的英文不好

1 个答案:

答案 0 :(得分:4)

DialogPreference的Android文档不完整!

只需看一下PreD的JavaDoc#onClick()

/**
 * Processes a click on the preference. This includes saving the value to
 * the {@link SharedPreferences}. However, the overridden method should
 * call {@link #callChangeListener(Object)} to make sure the client wants to
 * update the preference's state with the new value.
 */
protected void onClick() {
}

“重写的方法应该调用{@link #callChangeListener(Object)}”

在DialogPreference中重写onClick以打开对话框,但onDialogClosed()的JavaDoc没有提及调用#callChangeListener(Object)。

所以只需添加一个

callChangeListener(newValue);

调用onDialogClosed()实现的开头。

但是,这应该在DialogPreference本身中实现。