4

我为 Enter keyevent 添加了 setOnKeyListener。但是,在我添加 setOnKeyListener 后,删除(退格)键不起作用。当我删除 setOnKeyListener 时,删除键工作正常。

如何修复删除键正常工作?

final EditText edittext = (EditText) findViewById(R.id.editText1);

        edittext.setOnKeyListener(new OnKeyListener() {


            @Override
            public boolean onKey(View arg0, int arg1, KeyEvent event) {
                // TODO Auto-generated method stub
                 if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {

                     InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                        in.hideSoftInputFromWindow(edittext
                                .getApplicationWindowToken(),
                                InputMethodManager.HIDE_NOT_ALWAYS);

                     applySearch();


                 }
                return true;
            }


        });
4

2 回答 2

4

如果你 return True,你正在处理所有的钥匙。尝试这个:

if (event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
    // something here
    return true;
}

// otherwhise
return false;

Android:为按钮覆盖 onKeyListener 的问题

于 2012-06-02T20:29:50.790 回答
3

根据文档 onKey,如果侦听器已经消费了事件,则返回True,否则返回 false。在你的情况下:

@Override
public boolean onKey(View arg0, int arg1, KeyEvent event) {
    ...
    return true; // Try to return false instead
}

当您的方法返回true键未处理并且退格不起作用时。

于 2012-06-02T20:28:15.673 回答