对话框显示两次

时间:2012-11-02 20:16:03

标签: android android-layout

在我的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, 埃里克

2 个答案:

答案 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;
                    }