OnEditorActionListener不工作(OnEditorActionListener n

2019-08-20 22:37发布

我只是希望,当用户按下一个EditText输入捕捉事件。

我没有得到消息敬酒,而不是“输入压”而不是“一些关键按下!” 无论是。

什么MI做错了什么?

myEditText.setOnEditorActionListener(new OnEditorActionListener() {

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

   Toast.makeText(getApplicationContext(), "Some key pressed!", Toast.LENGTH_LONG).show();

        if (event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
             Toast.makeText(getApplicationContext(), "Enter pressed", Toast.LENGTH_LONG).show();
                return true;
                }
                return false;
            }
        });

编辑:

那么它是工作在Android 2.3.3,而不是工作4.1.2任何想法如何,我可以做任何Android设备上工作的呢?

Answer 1:

请尽量设置EditText在单行模式。

editText.setSingleLine();

或者在你的XML布局文件:

android:singleLine="true"

UPDATE

android:singleLine="true"已经过时了。 从现在起,使用android:maxLines="1"android:inputType="text"为实现这一行为

要么

editText.setMaxLines(1);
editText.setInputType(InputType.TYPE_CLASS_TEXT);

通过编程设定。



Answer 2:

使用android:imeOptions="actionGo" XML格式。 actionDone不再响应onEditorAction



Answer 3:

android:inputType="text"android:imeOptions="actionGo"做的奇迹。



Answer 4:

myEditText.setOnEditorActionListener(new OnEditorActionListener() {

public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {
    Toast.makeText(getApplicationContext(), "some key pressed", Toast.LENGTH_LONG)
                        .show();
    return false;
}
});

此代码显示我按下当我输入的EditText东西回车键后按一些关键的 。 但我不什么是你的代码的问题。



Answer 5:

对我来说,问题是,我在XML已成立android:inputType="textMultiline" 。 当我删除textMultiline选项, EditorListener开始工作。



Answer 6:

我不知道为什么阿图尔Chatuverdi的答案downvoted, - 很多浏览后,这个终于做到了“一个奇迹”给我。

我确认ActionDone可能无法正常工作。 它适用于我的三星,但由于某种原因,对飞S.不起作用的事件只是不被解雇。 两者都是安卓7.1。 我不知道,如果它是谷歌的键盘的错误...

我用来做它最后的工作在所有设备上的代码是

<EditText   
     android:singleLine="true"
     android:inputType="textUri"
     android:maxLines="1"
     android:imeOptions="actionGo"          
     ...
     android:id="@+id/et_path"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
    />

(您可以使用文字而不是textUri,根据您的需要)。

在我的片段:

editText = view.findViewById(R.id.et_path);
...
editText.setOnEditorActionListener(new onGo());

和嵌套类处理动作。

private class onGo implements TextView.OnEditorActionListener {
   @Override
   public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
    if (i == EditorInfo.IME_ACTION_GO) {

         // To do stuff
        return true;
    }
    return false;
   }
  }

至于if (event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER))多行文本,我也有同样的问题。 它的工作原理与三星键盘,黑客的键盘,而不是谷歌键盘。

建议使用textwatcher是一个没有去因各种原因(如与进入的迹象,而不是按下回车键和其他粘贴文本)。



文章来源: OnEditorActionListener not working