在我的Android应用程序中,我在OnCreate函数中有以下代码:
txtUsername.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
// TODO Auto-generated method stub
String Username = txtUsername.getText().toString();
if (arg1 == KeyEvent.KEYCODE_ENTER) {
DontShowDialog = false;
if ((Username.toLowerCase().endsWith("blabla.com") == false && Username.toLowerCase().endsWith("blabla-bla.nl") == false) || validateEmail(Username) == false) {
final Dialog dialog = new Dialog(arg0.getContext());
dialog.setContentView(R.layout.startdialog);
dialog.setTitle("Warning 1");
Button btOk = (Button) dialog.findViewById(R.id.btOk);
btOk.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
DontShowDialog = true;
dialog.dismiss();
return;
}
});
if (DontShowDialog == false) {
dialog.show();
}
return false;
}
}
txtUsername.clearFocus();
txtPassword.setNextFocusDownId(txtPassword.getId());
return false;
}
});
当用户点击NEXT按钮且用户名不正确时,会出现一个对话框,可以通过OK按钮取消。 但是....点击OK按钮后,再次显示对话框...我不想要那个。
为什么会这样?
RG, 埃里克
答案 0 :(得分:2)
通过在false
事件中返回onKey()
,您告诉Android KeyEvent
未被使用 - 所以我的猜测是将return语句更改为true
可能会解决问题,因为Android会知道事件被消耗了,并且它不会重新输入onKey()
方法。如果你可以试试并分享那些很棒的结果!
答案 1 :(得分:0)
解决了它。
移动了行
DontShowDialog = true;
来自OnClick部分的
将onClick下面的if-then更改为:
if (DontShowDialog == false) {
dialog.show();
DontShowDialog = true;
return false;
}