我有一个名为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。抱歉我的英文不好
答案 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本身中实现。