处理edittexts onKeyListener?

时间:2010-12-28 09:58:21

标签: android keylistener

我正在使用2个editTexts创建登录屏幕: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键时,程序会尝试登录服务器。

在调试模式下,我看到当我按下一次(在etUsername上)时,首先调用:etUsername.onKey(),然后调用etPassword.onKey()!

如何修改代码,以便只对当前字段处理一次ENTER事件?

1 个答案:

答案 0 :(得分:4)

在检查按下了哪个键之前,请尝试添加检查发生了哪个键事件。我猜它首先触发按键事件,然后你将焦点移动到第二个文本字段,这里它也会触发关键事件。

有关如何检查事件类型和密钥的示例,请参阅此处:Use "ENTER" key on softkeyboard instead of clicking button

我对此并不是百分之百确定,但值得一试: - )