【问题标题】:How to get an event for soft keyboard KEYCODE_DEL?如何获取软键盘KEYCODE_DEL的事件?
【发布时间】:2011-03-06 14:14:47
【问题描述】:

我之前在 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 的事件,可以做些什么?是 派生键盘子类的唯一方法?

谢谢。

【问题讨论】:

    标签: android squeak


    【解决方案1】:

    我遇到了类似的问题,我可以通过使用 addTextChangedListenerTextWatcher 添加到 EditText 来解决它。

    【讨论】:

    • 事实上,当我终于从 Android 开发邮件列表中得到答案时,解决方案不是从 BaseInputConnection 派生任何子类,而是在询问时回复一个 BaseInputConnection 的实例。在这种模式下,我现在获得了我的视图的每个软键。不过还是要感谢所有关注这个问题的人。
    • 嗨,Dmitry,我也有保存问题。实际上,onkeydown 在许多设备上都可以正常工作,但“sony ericsson xperia x10 mini pro”除外。您是否在“sonyericsson xperia x10 mini pro”中尝试过您的应用程序?
    • 不,不在这个。以下 Wiki 页面 code.google.com/p/squeakvm-tablet/wiki/TinyBenchmark 显示了其他人尝试过我的程序(Android 的 Smalltalk Cog VM 端口或 CogDroid)的设备列表。不过,我不确定其中是否有硬件键盘:其中大多数是平板电脑。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 2011-02-15
      • 2012-11-12
      • 1970-01-01
      相关资源
      最近更新 更多