我的EditText字段都响应按下返回键

时间:2014-06-15 20:38:35

标签: android android-edittext focus

我有两个EditText字段,一个用于用户名,另一个用于密码。当我输入用户名并按回车键时,我希望焦点切换到密码。当我完成密码并按回车键时,也会运行一些代码。

我的问题是,当我输入用户名的代码并按回车键时,两段代码都会运行。以下是我的代码:

userNameEditText.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
       if (keyCode == KeyEvent.KEYCODE_ENTER && userNameEditText.hasFocus()) {
           passwordEditText.requestFocus();
           return true;
       }
       return false;
    }
});

passwordEditText.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
       if (keyCode == KeyEvent.KEYCODE_ENTER && passwordEditText.hasFocus()) {
            attemptLogin(userNameEditText, passwordEditText);
            InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(activity.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(passwordEditText.getWindowToken(), 0);
            return true;
        }
        return false;
    }
});

当我按下键盘上的Enter键时,我该怎么办才能运行所选EditText的代码?

1 个答案:

答案 0 :(得分:2)

您的问题是您尚未测试KeyEvent的类型。

第一个侦听器在event.getAction()== ACTION_DOWN时被触发,然后在event.getAction()== ACTION_UP时触发第二个侦听器。

您需要更改您的侦听器以检查操作类型和键,我建议您仅在ACTION_UP上触发操作。