我一直在关注官方的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上找到),我真的很想解决这个问题,因为它让我感到慌乱,因为官方教程看起来不那么简单。
提前致谢。
答案 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
。