KeyEvent触发2个事件 - 我可以添加延迟吗?

时间:2016-02-24 17:17:54

标签: java android login focus

所以我有一个用户名和密码字段的代码。我想在Android中使用Enter键将光标移动到密码字段。这是有效的,但是,我的代码也会触发密码字段来调用signUpOrLogin函数。

有没有办法添加延迟或解决此问题的方法?

if (usernameField.hasFocus() && keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){
  passwordField.requestFocus();
  }

if (passwordField.hasFocus() && keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){
  signUpOrLogin(v);
}

1 个答案:

答案 0 :(得分:0)

您可以在if语句中添加isEmpty()以检查是否已使用TextField。这将使得字段必须具有要执行的语句的值。您的代码如下所示: (请注意,我没有测试过这个)

    if (!usernameField.getText().isEmpty() && usernameField.hasFocus() && KeyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){
         passwordField.requestFocus();
    }

    if (!passwordField.getText().isEmpty() && passwordField.hasFocus() && keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){
         signUpOrLogin(v);
    }

希望这会有所帮助。 :)