在EditText中按“Enter”后执行Android功能

时间:2011-11-22 20:44:43

标签: android android-edittext enter

我一直在关注官方的Android教程,并且在按“Enter”为EditText后执行函数时,this very simple example出现了问题。

我理解我应该做的事情并且似乎已经正确设置了所有内容,但Eclipse正在抱怨这条线:

edittext.setOnKeyListener(new OnKeyListener() {

它强调setOnKeyListener并带有错误:

  

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

还强调OnKeyListener并带有错误:

  

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

也许有人可以朝着正确的方向射击我?在我尝试其他解决方案之前(我已经在stackoverflow上找到),我真的很想解决这个问题,因为它让我感到慌乱,因为官方教程看起来不那么简单。

提前致谢。

3 个答案:

答案 0 :(得分:50)

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

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;
    }
});

答案 1 :(得分:12)

从我所看到的情况看,你的导入错误。

尝试

edittext.setOnKeyListener(new View.OnKeyListener() {

或者添加此导入

import android.view.View.OnKeyListener;

并删除此

import android.content.DialogInterface.OnKeyListener;

答案 2 :(得分:2)

删除包含DialogInterface的导入语句,然后导入View.OnKeyListener