0

在我的 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 按钮取消该对话框。但是....点击确定按钮后,对话框再次显示...我不想要那个。

为什么会这样?

rg,埃里克

4

2 回答 2

2

通过false在您的onKey()事件中返回,您是在告诉 AndroidKeyEvent没有使用 - 所以我的猜测是,将 return 语句更改为true可能会解决问题,因为 Android 会知道该事件已被使用,并且它不会重新进入该onKey()方法. 如果您可以尝试并分享结果,那就太好了!

于 2012-11-02T21:51:26.930 回答
0

解决了。

移动了这条线

DontShowDialog = true;

从 OnClick 部分

将 onClick 下面的 if-then 更改为:

if (DontShowDialog == false) {
                        dialog.show();
                        DontShowDialog = true;
                        return false;
                    }
于 2012-11-03T20:03:02.717 回答