在EditText中按"Enter"后执行Android功能

use*_*582 12 android enter android-edittext

我一直在关注官方Android教程,并且在按下"Enter"为EditText后执行函数这个非常简单的示例时遇到了问题.

我明白我应该做什么,并且似乎已经正确设置了所有东西,但Eclipse正在抱怨这条线:

edittext.setOnKeyListener(new OnKeyListener() {
Run Code Online (Sandbox Code Playgroud)

它强调setOnKeyListener错误:

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

并且还强调OnKeyListener了错误:

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

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

提前致谢.

Moh*_*lah 50

要接收键盘事件,View 必须具有焦点.强制使用:

edittext.setFocusableInTouchMode(true);
edittext.requestFocus();
Run Code Online (Sandbox Code Playgroud)

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

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;
    }
});
Run Code Online (Sandbox Code Playgroud)


MrZ*_*der 12

从我所看到的,看起来你有错误的导入.

尝试

edittext.setOnKeyListener(new View.OnKeyListener() {
Run Code Online (Sandbox Code Playgroud)

或者添加此导入

import android.view.View.OnKeyListener;
Run Code Online (Sandbox Code Playgroud)

并删除这一个

import android.content.DialogInterface.OnKeyListener;
Run Code Online (Sandbox Code Playgroud)