Java Android:捕捉每一种可能类型的;输入“;键(硬键和软键)?

Java Android:捕捉每一种可能类型的;输入“;键(硬键和软键)?,java,android,android-edittext,Java,Android,Android Edittext,你好 我有一个Android应用程序(v2.3.3及更高版本),允许您通过EditText控件进行搜索。我使用以下代码检测用户何时完成搜索,并按下硬键或软键执行搜索: EditText editText = (EditText)findViewById(R.id.search_box); editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public b

你好

我有一个Android应用程序(v2.3.3及更高版本),允许您通过
EditText
控件进行搜索。我使用以下代码检测用户何时完成搜索,并按下硬键或软键执行搜索:

EditText editText = (EditText)findViewById(R.id.search_box);    
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

        if (actionId == EditorInfo.IME_ACTION_SEARCH ||
            actionId == EditorInfo.IME_ACTION_DONE ||
            (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) 
        {
                performSearch();              
                return true;
        }

        return false;
    }
});
显然,这并没有抓住所有可能表达“回车”的方式,因为一位测试人员刚刚告诉我,他们的HTC Evo软键盘上的“回车”键没有任何作用。搜索硬键(放大镜)可以工作,但此代码无法从软键盘捕获事件

阅读一些帖子后,这类问题的大多数答案都包含了上述逻辑的部分或全部。我也读到HTC做一些键盘的东西不同

有人有防弹代码来检测任何设备上的“输入”输入吗


谢谢大家!

我已经有同样的问题了。取消对actionId的检查,只需检查if语句中的
event.getAction()==KeyEvent.ACTION\u DOWN

@Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

        if (actionId == KeyEvent.ACTION_DOWN) 
        {
                performSearch();              
                return true;
        }

        return false;
    }

我认为textchangelistener可以捕获enter键,试试这个

        commentt.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            // if enter is added to your CharSequence 
            // { 
            //      do search

            // }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });

没用<代码>事件为
,因此它因
空点异常
而死亡。我目前正在测试2.3.3设备。
        commentt.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
            // if enter is added to your CharSequence 
            // { 
            //      do search

            // }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });