Android setOnKeyListener not firing off



我正在尝试执行一些代码,当用户在EditText中输入内容后,我按下手机键盘上的"enter"键时,该代码目前是Toast,但当我按下enter时,侦听器代码不会执行。

我读过很多例子,有些人使用setOnKeyListener(),有些人则使用setOnEditListener()setOnEditListener()给我造成了错误,而setOnKeyListener()就是不执行,这就是为什么我选择setOnKeyListener(),因为我认为这是一个更容易的修复方法。

mQuery = (EditText) findViewById(R.id.query);
mQuery.setImeActionLabel("Search", KeyEvent.KEYCODE_ENTER);
mQuery.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        Toast.makeText(SearchActivity.this, event.getAction(), Toast.LENGTH_LONG).show();
        if(event.getAction() == KeyEvent.KEYCODE_ENTER){
            //TODO implement action
            Toast.makeText(SearchActivity.this, "GETTING IT", Toast.LENGTH_LONG).show();
            return true;
        }
        return false;
    }
});

编辑:这是我的xml文件。我对这里的imeAction标签什么都不做

<EditText
    android:id="@+id/query"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:inputType="text"/>

您可以尝试执行此

    EditText mQuery = (EditText) findViewById(R.id.query);
    mQuery.setOnKeyListener(this);
 }
 @Override
 public boolean onKey(View view, int keyCode, KeyEvent event) {
    if (keyCode == EditorInfo.IME_ACTION_SEARCH || 
        keyCode == EditorInfo.IME_ACTION_DONE ||
        event.getAction() == KeyEvent.ACTION_DOWN &&
        event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
        if (!event.isShiftPressed()) {
            //TODO implement action
            Toast.makeText(SearchActivity.this, "GETTING IT", Toast.LENGTH_LONG).show();
            return true;
        }
        return false;
     }

有关更详细的解释,请参阅:Android EditText onKey Event。

最新更新