android - 处理 KeyListener 上的编辑文本?

标签 android keylistener

我正在使用 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/

相关文章:

android - .setText 方法将不起作用

java - 如何获取媒体播放器持续时间的正确持续时间格式?

java - 尝试从 JTextArea 回显文本

java - 如何为 JFrame 的所有组件创建 KeyListener 触发器?

java - KeyListener 未添加

android - Edittext 中显示的多个光标

java - 如何在java中为图像赋值

android - 清除文本时 EditText 崩溃

java - 在循环中使用 KeyListener

Java 锁定单词,使其无法使用