48

AlertDialogを閉じた後、ソフトキーボードを非表示にしたいのですが、まだ表示されています。これが私のコードです:

alert = new AlertDialog.Builder(MyActivity.this);
imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

alert.setOnDismissListener(new DialogInterface.OnDismissListener() {

    @Override
    public void onDismiss(DialogInterface dialog) {
        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
    }
});
4

8 に答える 8

17

私は同じ問題に遭遇しました。このようにすることで解決しました。参照は必要ありません。

imm.hideSoftInputFromWindow(getWindow().getDecorView()
                .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
于 2013-04-08T13:06:13.850 に答える
7

私はこの方法を使用します:

IBinder token = searchTextEntry.getWindowToken();
( ( InputMethodManager ) getSystemService( Context.INPUT_METHOD_SERVICE ) ).hideSoftInputFromWindow( token, 0 );

私の参照searchTextEntryの名前はどこにありますか。EditText

于 2012-07-25T09:22:01.497 に答える
2
protected void hideKeyboard() {
    final Activity activity = getActivity();
    final View view = activity != null ? activity.getCurrentFocus() : null;
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            if (view != null) {
                InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm != null)
                    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
            }
        }
    }, 1);
}

@Override
public void onDismiss(DialogInterface dialog) {
    super.onDismiss(dialog);
    hideKeyboard();
}
于 2019-02-14T02:13:28.730 に答える
0

使用するこれらのアドバイスはすべてInputMethodManagerややあいまいです-正確にどこでそれを呼び出すべきか、
そしてそれらは少なくとも私には機能しません.
はい、キーボードが消えますが、アプリがクラッシュします!?
主な問題は、ダイアログが消えると同時にキーボードが隠されることです。

回避するには、後でdialog.dismiss()呼び出す必要があり、私の場合は遅延を 150 に設定します。view.postDelayed()imm.hideSoftInputFromWindow()

于 2015-06-14T02:33:22.587 に答える