Activity終了時(finish)コードでソフトキーボードを非表示にする(ソフトキーボードが表示されている場合)


需要:インタフェースfinishが消え、ソフトキーボードが表示されている場合は非表示にします.
シナリオ1:
 @Override
    protected void onDestroy() {
        super.onDestroy();

        InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
        if (imm != null) {
            imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
        }

    }

以上の方法は、1つのインタフェース(dialog形式のacitivity)で可能であるが、別のインタフェース(通常、画面全体を占めるactivity)ではだめである.具体的な原因はまだ見つかっていない.
シナリオ2:
終了インタフェースのリスニングイベントに配置:
case R.id.rlBackArrow:
                hideInput(this, etContent);
                finish();
                break;
private void hideInput(Context context, View view) {
        InputMethodManager inputMethodManager =
                (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }

finishの前にキーボードを隠すと問題が解決します
 
 
いくつかの基礎知識:

AndroidでのInputMethodManagerクラスの使い方


https://blog.csdn.net/pi9nc/article/details/9196779