Android setOnKeyListener没有开火

时间:2016-01-05 18:04:48

标签: android android-edittext

我正在尝试执行一些代码,当我点击"输入"时,现在是Toast。用户在EditText中输入内容后键入我的电话键盘,但是当我按下回车键时,听众代码没有被执行。

我已经阅读了大量示例,其中有些人使用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"/>

1 个答案:

答案 0 :(得分:0)

您可以尝试这样做

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

有关更详细的说明,请参阅:http://amp.pharm.mssm.edu/clustergrammer/viz/568affd5b6541b84f3a68234