13

我一直在关注官方的 Android 教程,但不知何故,这个非常简单的示例在为 EditText 按“Enter”后执行函数时遇到了问题。

我了解我应该做什么,并且似乎所有设置都正确,但 Eclipse 抱怨这一行:

edittext.setOnKeyListener(new OnKeyListener() {

setOnKeyListener它用错误强调:

View 类型中的方法 setOnKeyListener(View.OnKeyListener) 不适用于参数(新 DialogInterface.OnKeyListener(){})

并且还强调OnKeyListener了错误:

new DialogInterface.OnKeyListener(){} 类型必须实现继承的抽象方法 DialogInterface.OnKeyListener.onKey(DialogInterface, int, KeyEvent)

也许有人可以朝正确的方向射击我?在我尝试其他解决方案(我已经在 stackoverflow 上找到)之前,我真的很想弄清楚这一点,因为它让我感到慌乱,作为官方教程,这么简单的东西似乎不起作用。

4

3 回答 3

51

要接收键盘事件,视图必须具有焦点。要强制使用:

edittext.setFocusableInTouchMode(true);
edittext.requestFocus();

之后继续使用示例中的相同代码:

edittext.setOnKeyListener(new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // If the event is a key-down event on the "enter" button
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
            (keyCode == KeyEvent.KEYCODE_ENTER)) {
          // Perform action on key press
          Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show();
          return true;
        }
        return false;
    }
});
于 2011-11-22T21:08:11.513 回答
12

据我所知,您的导入似乎有误。

尝试

edittext.setOnKeyListener(new View.OnKeyListener() {

或添加此导入

import android.view.View.OnKeyListener;

并删除这个

import android.content.DialogInterface.OnKeyListener;
于 2011-11-22T20:49:30.103 回答
2

删除具有 的导入语句DialogInterface,然后导入View.OnKeyListener.

于 2011-11-22T20:48:55.987 回答