gpt4 book ai didi

android - 设置 DialogPreference 摘要 OnPreferenceChange

转载 作者:搜寻专家 更新时间:2023-11-01 08:02:56 27 4
gpt4 key购买 nike

我有一个名为 MyDialogPreferenceDialogPreference 子类,当我单击 DialogInterface.BUTTON_POSITIVE 时,它有两个用于用户名和密码的 EditText按钮,我设置了一些偏好:

//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 的 SettingsFragment 中,每当我关闭 MyDialogPreference 时,我都能够将更改的数据显示为首选项的摘要

这是首选项的布局:

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

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

我试图将此 DialogPreference 绑定(bind)到 OnPreferenceChangeListener,但没有成功。

这也是它的代码:

DialogPreference userPassScreen = (DialogPreference) findPreference("userPassScreen");
userPassScreen
.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {

@Override
public boolean onPreferenceChange(Preference preference,
Object newValue) {
SharedPreferences settings = context
.getSharedPreferences(PREFS_NAME, 0);

int userId = settings.getInt("userId", 0);
if (userId == 0) {
preference.setSummary("Please Login");
return false;
}
try {
preference.setSummary(String.valueOf(userId));
} catch (Exception e) {
e.printStackTrace();
}

return false;
}
});

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

附言。抱歉我的英语不好

最佳答案

DialogPreference 的 Android 文档不完整!

看看Preference#onClick()的JavaDoc就可以了

/**
* 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 本身中实现。

关于android - 设置 DialogPreference 摘要 OnPreferenceChange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18473122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com