我只是希望,当用户按下一个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设备上工作的呢?
请尽量设置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);
通过编程设定。
使用android:imeOptions="actionGo"
XML格式。 actionDone
不再响应onEditorAction
。
android:inputType="text"
和android:imeOptions="actionGo"
做的奇迹。
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东西回车键后按一些关键的 。 但我不什么是你的代码的问题。
对我来说,问题是,我在XML已成立android:inputType="textMultiline"
。 当我删除textMultiline
选项, EditorListener
开始工作。
我不知道为什么阿图尔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是一个没有去因各种原因(如与进入的迹象,而不是按下回车键和其他粘贴文本)。