我在EditTextPreference
中有一个PreferenceActivity
。当用户点击EditTextPreference
时会显示一个对话框。在对话框中,用户可以输入一个值,对话框中有“确定”和“取消”按钮。我想调用 ok 按钮的点击事件来检查值,但我甚至不知道如何调用点击。
我知道我可以使用EditTextPreference.setOnPreferenceChangeListener()
,但我想知道我是否可以使用OK按钮点击事件。
答案 0 :(得分:3)
实际上你不能,因为首选项是使用内部AlertDialog.Builder
并在每次单击首选项时创建一个新对话框。下一个问题是对话框构建器为您设置了单击侦听器,如果您覆盖它们,则可能会破坏按钮单击的关闭行为。
这让我感到困扰,因为我想要一个仅在有效输入时关闭的偏好(否则会显示吐司,如果他无法正确使用,则用户应该按取消。)
(如果你真的需要一个解决方案来解决这个问题)你可以找到我自己编写的验证DialogPreference
here和验证EditTextPreference
here的一般解决方案
答案 1 :(得分:3)
您可以扩展EditTextPreference以控制点击处理程序。
package myPackage;
public class CustomEditTextPreference extends EditTextPreference {
public CustomEditTextPreference(Context context) {
super(context);
}
public CustomEditTextPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomEditTextPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
// add Handler here
}
super.onClick(dialog, which);
}
}
在Xml而不是<EditTextPreference/>
中引用它:
<myPackage.CustomEditTextPreference android:dialogTitle="Registration Key" android:key="challengeKey" android:title="Registration Key" android:summary="Click here to enter the registration key you received by email."/>
答案 2 :(得分:1)