如何在 InputMethodManager#hideSoftInputFromWindow 中使用 ResultReceiver

How can I use ResultReceiver in InputMethodManager#hideSoftInputFromWindow

我有一些代码:

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

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

任何人都可以向我提供一些有关如何正确执行此操作或为什么它不起作用的详细信息吗?

如果 hideSoftInputFromWindow returns 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();
}