3

我编写了一个 IME,它显示一些弹出窗口并在用户单击返回时关闭它们。它在 99% 的时间都可以正常工作,但某些应用程序(如浏览器)能够拦截KeyEvent.KEYCODE_BACK我之前的 IME,使我的弹出窗口卡在打开状态。

根据文档 InputMethodService 应该在 Activity 之前接收关键事件。我已经用一个 Activity 测试了它,它按预期工作。

我检查了浏览器源代码,它只是覆盖了Activity.onKeyDown()and ,它应该在and之后onKeyUp()接收事件。 InputMethodService.onKeyDown()onKeyUp()

为什么浏览器似乎以错误的顺序接收关键事件?请帮忙,因为我不想在我所有的弹出窗口中添加丑陋的关闭按钮!!!

提前致谢,

巴里

4

1 回答 1

1

它的Activity.onBackPressed()。当您覆盖此按钮的功能时要小心,因为如果您做一些意想不到的事情或完全忽略后退按钮,它会产生非常负面的用户体验。

如果您使用 AlertDialogs 或类似的弹出窗口,您可能不需要覆盖该功能,只需 setCancelable(true)。触摸屏幕和返回按钮将关闭对话框。

于 2011-07-13T22:52:41.130 回答