【问题标题】:How can I use ResultReceiver in InputMethodManager#hideSoftInputFromWindow如何在 InputMethodManager#hideSoftInputFromWindow 中使用 ResultReceiver
【发布时间】:2015-03-07 15:25:06
【问题描述】:

我有一些代码:

inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0, new ResultReceiver(null) {
     @Override
     protected void onReceiveResult(int resultCode, Bundle resultData) {
          keyboardClosed();
     }
});

但是,在 4.3 模拟器上运行它时,永远不会调用 onReceiveResult() 方法。 我确定我做错了什么,但看不到什么......

谁能提供一些有关如何正确执行此操作或为什么它不起作用的详细信息?

【问题讨论】:

  • 你的模拟器会弹出输入法键盘吗?
  • 隐藏 IME 键盘(这是这段代码应该做的)。之前的代码是: inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);键盘关闭();在这种情况下,一切正常。
  • 回调在真实设备上是否有效?如果是这样,你只是得到了另一个模拟器错误。如果没有,IDK 并不能为您提供更多帮助,因为您的代码确实应该可以工作。祝你好运。
  • 查看这个方法:ninthavenue.com.au/…
  • 回调也无法在真实设备(Galaxy S2)上工作。

标签: android ime


【解决方案1】:

如果hideSoftInputFromWindow返回false,则不会调用ResultReceiver
你可以检查这个值:

boolean hide = inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0, new ResultReceiver(null) {
    @Override
    protected void onReceiveResult(int resultCode, Bundle resultData) {
       keyboardClosed();
    }
});
if (!hide) {
    // already hidden
    keyboardClosed();
}

【讨论】:

  • 你是我的救星。很容易错过。
  • 但是......呃......为什么它返回'false'?
  • 真实的。文档没有说明返回值
猜你喜欢
  • 1970-01-01
  • 2014-09-12
  • 2011-05-29
  • 1970-01-01
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
相关资源
最近更新 更多