【问题标题】:KeyEvent is triggering 2 events - can I add a delay?KeyEvent 正在触发 2 个事件 - 我可以添加延迟吗?
【发布时间】:2016-02-24 17:17:53
【问题描述】:
所以我有以下用于用户名和密码字段的代码。我想让 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);
}
【问题讨论】:
标签:
java
android
login
focus
【解决方案1】:
您可以在 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);
}
希望这会有所帮助。 :)