Скрыть мягкую клавиатуру после отклонения диалога

Я хочу скрыть мягкую клавиатуру после того, как 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); } }); 

Вы можете найти решение здесь:

http://www.workingfromhere.com/blog/2011/04/27/close-hide-the-android-soft-keyboard/

ИЛИ здесь:

Закрыть / скрыть Soft Soft

В манифесте xml

андроид: windowSoftInputMode = "stateAlwaysHidden"

Он автоматически скроет мягкую клавиатуру на Dismass of Dialog

Я встретил ту же проблему. Решил это, делая это. Он не нуждается ни в каких ссылках:

 imm.hideSoftInputFromWindow(getWindow().getDecorView() .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

У меня была аналогичная проблема при закрытии диалогового окна предупреждения. Кажется, это делает трюк для меня.

Внутри вашего диалогового окна

 public static void closeKB(final View view) { caller.postDelayed(new Runnable() { @Override public void run() { InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } }, 1); } @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); View view = getActivity().getCurrentFocus(); if (view != null) { closeKB(view); } } 

Я использую этот метод:

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

Где searchTextEntry – это имя моей ссылки EditText .

Этот ответ решает проблему спрятать мягкую клавиатуру из диалога, даже если нет редактируемого текста.

Как скрыть клавиатуру в диалоговом окне

Все эти советы по использованию InputMethodManager несколько расплывчаты – где именно назвать это,
И они не работают, по крайней мере, для меня.
Да, клавиатура исчезает, но потом приложение падает !?
Основная проблема заключается в том, что скрытие клавиатуры происходит одновременно, когда диалог исчезает.

Чтобы избежать этого, dialog.dismiss() следует вызвать в view.postDelayed() после imm.hideSoftInputFromWindow() и в моем случае я установил задержку как 150.