我正在使用 2 个编辑文本创建登录屏幕:etUsername 和 etPassword。
在etUsername 中,用户输入用户名并按Enter 进入编辑文本etPassword,然后输入密码,按Enter 登录。这是我当前的代码:
etUsername.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_ENTER)) {
etPassword.requestFocus();
return true;
} else
return false;
}
});
etPassword.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_ENTER)) {
loginToServer();
return true;
} else
return false;
}
});
但是,当我输入用户名,然后按 Enter 时,程序会尝试登录服务器。
在 Debug模式下,我看到当我按 Enter 一次(在 etUsername 上)然后首先:调用 etUsername.onKey(),然后调用 etPassword.onKey()!
如何修改代码,使 ENTER 事件只对当前字段处理一次?
最佳答案
在检查哪个键被按下之前,尝试添加一个检查哪个键事件发生。我猜它首先触发按下键事件,然后将焦点移动到第二个文本字段,这里它也触发按下键事件。
有关如何检查事件类型和 key 的示例,请参见此处:Use "ENTER" key on softkeyboard instead of clicking button
我不是 100% 确定这一点,但值得一试 :-)
关于android - 处理 KeyListener 上的编辑文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4545162/