- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个名为 MyDialogPreference
的 DialogPreference
子类,当我单击 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/
我有一个 DialogPreference。我想设置它的对话框标题 (setTitle()),但它不起作用。 我的代码: public class RestoreDefaultApperanceDia
我想要完成的事情:在 DialogPreference 显示的消息文本中创建一个可点击的超链接。 到目前为止我的解决方案:关注此主题:link ,我完成了在 DialogPreference 中显示的
我正在尝试创建自定义对话框首选项,它将包含带有两个单选按钮和一个编辑文本的单选组。如果我写类似 尝试创建包含此对话框首选项的 PreferenceActivity 时应用程序中断。 我想我必须将 D
我在我的 Android 应用程序中创建了一个自定义对话框首选项,但我无法弄清楚如何让显示的对话框跨越显示器的整个宽度。 image of dialog with too much space on
我正尝试按如下方式创建对话框首选项 但是当 Activity 运行时它强制关闭并出现以下错误 11-01 01:21:18.820: E/AndroidRuntime(19644): java.la
我有一个这样定义的类 public class MyDialog extends DialogPreference { 并在 preference.xml 中 我的问题是如何以编程方式启动 MyDi
我创建了扩展 DialogPreference 的新 TimeDialogPreference。 在 preferences.xml 我有: 如何从 TimeDialogPreference 类访问
我想在第一次启动应用程序时打开一些首选项(通过扩展 DialogPreference 创建)。此外,这些首选项用作通常的首选项。 有没有办法做到这一点? 编辑: 我有我的自定义偏好,如下所示: pub
我正在开发自定义 DialogPreference。 当用户在对话框外单击时,它会被取消,我需要避免这种情况。 我知道 Dialog 有方法 setCanceledOnTouchOutside(boo
我有一个自定义的 DialogPreference,它只包含一个日期选择器。一切正常,除了对话框有一个巨大的边框和标题,如下所示。 我希望对话框只是日期选择器: 我已经想出了如何通过将窗口标题设置为
我的首选项 Activity 中有一个对话框,定义如下(布局在 xml 中定义): public class DialogPreference extends android.preference.D
我在我的程序中使用 DialogPreference,现在我想使用 DialogPreference 在单击 OK 按钮时重定向到网页。 Preferences.xml:- TimePicke
我根据 this link. 的回答创建了自定义首选项对话框 现在我想在我的 ActivityPreferenceScreen Activity 类中的那个按钮上单击事件。我怎样才能做到这一点? 最佳
我希望我的程序存储远程服务的凭据,这样用户只需在首选项中设置一次就再也不会这样做了。 因此,我将 DialogPreference 子类化,我的类显示了一个漂亮的对话框,其中包含两个用于登录和密码的字
我目前有一个扩展 DialogPreference 的自定义 Dialog 类(这当然是 PreferenceScreen 的一部分)。 此对话框具有处理保存和取消的自定义按钮。因此,我想去掉标准的“
我正在尝试在首选项布局中实现 DialogPreference。不幸的是,下面的代码总是导致强制关闭。 EditTextPreferences 运行良好,但我需要一个简单的对话框。有什么建议吗? 最
尝试编写自定义对话框首选项(NumberPickerDialog)。尽管 android 文档详细介绍了这个主题,但我似乎错过了他们文档中的一些基本构建 block 。 到目前为止,我所拥有的是一个显
我有一个用于 SeekBar 的自定义 DialogPreference。我覆盖 style="@style/Theme.Putio.Dialog" 并从 XML 扩展布局。 问题是,生成的对话框使用
我有一个 DialogPreference,我想避免用户在按“确定”、“取消”等键时关闭它。 我应该怎么做? 编辑: 我试图在创建对话框时触及“确定”按钮以禁用它。但是我做不到:( 最佳答案 解决方法
在我的应用程序中,我使用 Theme.Holo 和 Theme.Holo.Light 没有任何问题。当使用 Holo 主题并且我单击 DialogPreference/ListPreference 时
我是一名优秀的程序员,十分优秀!