Intereting Posts
Интеграция Git-репозитория Visual Studio в Android Studio 1.0.2 Библиотека Android против внешней банки Использование изображения как GoogleMap Что такое VerticalScrollExtent в Android ScrollView? Как распечатать все ключи и значения из HashMap в Android? Как разместить вертушку под макетом спиннера, когда он щелкнут, и показать фигурку в леденец и выше? Ошибка: (39, 13) Не удалось решить: com.android.support:appcompat-v7:26.0.0 Как кэшировать JSON для автономного использования Было найдено более одного файла с независимым от ОС пути «META-INF / LICENSE» Сохранение шестнадцатеричных значений цвета в strings.xml Как реализовать многооконный макет (например, браузер по умолчанию) (редактор с несколькими открытыми файлами) Лотские свойства и значения Kotlin сброшены: сбрасываемый ленивый делегат Ошибка: выполнение выполнено для задачи ': app: transformClassesWithMultidexlistForDebug' Форма Android: круг с крестом (плюс) В Google Play, как опубликовать приложение с использованием конкретного пакета, какие другие пакеты могут быть опубликованы и кем?

Скрыть клавиатуру в AlertDialog

У меня есть alertdialog с editext. Для этого Edittext я создаю клавиатуру, и я хочу, чтобы пользователь нажал ok или отменил, чтобы скрыть клавиатуру. Странная проблема заключается в том, что когда пользователь выбирает ok, клавиатура скрыта, но когда вы выбираете отмену, клавиатура не скрывает, что я использую тот же код для обоих случаев.

Вот мой код:

final AlertDialog.Builder alert = new AlertDialog.Builder(this); alert.setTitle(data); final EditText input = new EditText(this); InputFilter[] FilterArray = new InputFilter[1]; FilterArray[0] = new InputFilter.LengthFilter(25); input.setFilters(FilterArray); input.postDelayed(new Runnable() { @Override public void run() { InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); keyboard.showSoftInput(input, 0); } },200); alert.setView(input); alert.setPositiveButton(ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { text = input.getText().toString().trim(); Canvas c = new Canvas(bitmapResult); drawTextImage(bitmapResult); saveimage(); InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(input.getWindowToken(), 0); } }); alert.setNegativeButton(cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.cancel(); saveimage(); InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(input.getWindowToken(), 0); } }); alert.show(); 

Где мой мистик? Может кто-нибудь мне помочь?

Solutions Collecting From Web of "Скрыть клавиатуру в AlertDialog"

Я нашел решение:

 alert.setNegativeButton(cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { saveimage(); InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(input.getWindowToken(), 0); dialog.cancel(); } }); 

Я должен был поставить dialog.cancel () после того, как скрою клавиатуру.

Я тоже боролся с этим и похлопал головой о почти каждое «решение», которое было опубликовано, но проклятая клавиатура все равно не закрылась. Затем у меня было озадаченное видение:

  InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(dialog.getWindow().getDecorView().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); } 

Обратите внимание на HIDE_IMPLICIT_ONLY

Надеюсь, что это поможет кому-то еще бороться с этой проблемой.

Не уверен, но вы можете попробовать добавить это:

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

Я использую его, чтобы избежать первого отображения клавиатуры при запуске моего приложения … когда я нажимаю в поле, клавиатура все еще открывается …

Таким образом, возможно, он мог бы работать с вашим кодом:

 keyboard.showSoftInput(input, 0); 

И затем автоматически закройте его …

Используйте следующий метод, прежде чем использовать dialog.cancel();

 public static void hideSoftKeyboardUsingView(Context context,View view) { InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); }