如何获取软键盘KEYCODE_DEL事件?

发布于 2024-10-20 06:56:51 字数 682 浏览 2 评论 0原文

我之前在 Android 开发者邮件列表中询问过这个问题,但没有得到回复。

在我的应用程序中,我时不时地打开软键盘,并且 看起来 DEL 键的事件未传递。该方法在 问题位于

http://pastebin.com/zZaZWJ4t

,整个 Java 类位于

http://squeakvm-tablet.googlecode.com/hg/project/src /org/squeak/android/SqueakView.java

软键盘上点击的任何字母数字键或 Enter(回车) 传递给应用程序(KEYCODE_DEL 除外)。我尝试更换 case 子句中的 KEYCODE_DEL 与其他任何内容(例如,代码为 对于硬件按钮 PAGE_UP),并且该子句在该情况下进行控制 按钮被按下。

我没有子类化 Android Keyboard 类,只是使用了默认值 输入管理器。

为了接收 KEYCODE_DEL 事件可以做什么?是 派生键盘子类的唯一方法?

谢谢。

I asked this previously on the Android dev mailing list but got no reply.

In my application, I bring the soft keyboard on from time to time, and
it looks like events for the DEL key are not delivered. The method in
question is at

http://pastebin.com/zZaZWJ4t

and the whole Java class is at

http://squeakvm-tablet.googlecode.com/hg/project/src/org/squeak/android/SqueakView.java

Any alphanumeric key or Enter (Return) tapped on the soft keyboard is
passed to the application except for KEYCODE_DEL. I tried to replace
KEYCODE_DEL in the case clause with anything else (e. g. with code for
for hardware button PAGE_UP), and the clause takes control when that
button is pressed.

I did not subclass the Android Keyboard class, just used the default
input manager.

What can be done in order to receive events for KEYCODE_DEL? Is
deriving a keyboard subclass the only way?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

咿呀咿呀哟 2024-10-27 06:56:51

我遇到了类似的问题,我可以通过添加 TextWatcher 使用 addTextChangedListener 到 EditText 。

I had a similar issue and I was able to solve it by adding a TextWatcher to EditText using addTextChangedListener.

故事和酒 2024-10-27 06:56:51

您的 onCreateInputConnection() 重写不会返回 TYPE_NULL 作为输入类型。您必须使用 TYPE_NULL 以确保将生成关键事件。事实上,它们是为某些键生成的,而不是为其他键生成的,在某些版本的 Android 中,而不是其他版本,但除非您使用 TYPE_NULL,否则您无法指望这一点。

如果您调整代码以使用 TYPE_NULL,请参阅此解决方法,以解决默认 LatinIME Google 键盘某些版本中影响 TYPE_NULL 处理的两个错误:

Android - 无法捕获软中的退格键/删除键。键盘

Your onCreateInputConnection() override is not returning TYPE_NULL as the input type. You must use TYPE_NULL to be assured that key events will be generated. They are in fact generated for some keys and not for others, in some versions of Android but not others, but there is nothing that you can count on about that unless you use TYPE_NULL.

If you do adjust your code to use TYPE_NULL, then please see this description of a workaround for two bugs in certain versions of the default LatinIME Google Keyboard that affect TYPE_NULL processing:

Android - cannot capture backspace/delete press in soft. keyboard

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文