AlertDialoug сосредотачивается на EditText при отклонении .. вызывает появление клавиатуры ... что делать? - PullRequest
2 голосов
/ 10 июня 2011

Я использую AlertDialog для всплывающего окна и запрашиваю у пользователя некоторую информацию, когда пользователь нажимает кнопку.

Диалог работает нормально, и я получаю информацию о пользователе, которую он сам закрывает.

Однако, когда приложение возвращает фокус на мой основной вид ... он устанавливает фокус на виджет EditText, который вызывает отображение клавиатуры для этого вида.

Я не хочу, чтобы клавиатура появлялась, если пользователь явно не фокусирует внимание на этом поле, поэтому как мне изменить / переопределить поведение по умолчанию, чтобы оно не фокусировалось на этом поле после закрытия AlertDialog.

Это не ведет себя таким образом, когда вид изначально раздувается, поле фокусируется (подсвечивается), но клавиатура не видна, только после того, как пользователь нажимает на поле, клавиатура появляется при запуске приложения. Это поведение после закрытия диалогов совершенно другое .. какие-либо идеи?

(Нет, EditText не находится рядом с кнопками диалогового окна оповещения, так что это не так, как если бы второе нажатие или что-то происходит случайно или щелчок передается вверх по стеку.)

Ответы [ 3 ]

2 голосов
/ 10 июня 2011

Вы можете попросить InputMethodManager отозвать клавиатуру, когда закрываете диалоговое окно:

EditText mValue; //The input view in your Dialog

//Close the keyboard
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mValue.getWindowToken(), 0);

Надеюсь, что поможет!

2 голосов
/ 10 июня 2011

Попробуйте сделать это после закрытия диалогового окна:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
1 голос
/ 13 июня 2011

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

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

При попытке отклонить клавиатуру в диалоговом окне слушатель отклонения не удалял клавиатуру, потому что он пытался отклонить клавиатуру для полей в родительском окне, и во время их выполнения она все еще была привязана к полю вthe alertview.

Добавьте вызовы dismisskeyboard к событиям onclick, которые отклонили набор для полей edittext в alertDialog, чтобы решить проблему.

...