Я прочитал пару сообщений здесь, а также попытался погуглить. Но у меня все еще есть эта проблема:
я создал пользовательский диалог подкласса. Он содержит EditText и кнопку («ОК»). Я хочу, чтобы клавиатура отображалась автоматически после появления диалогового окна.
Мне удалось это сделать, поставив это:
imm = (InputMethodManager) EditDialog.this.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_NOT_ALWAYS);
в моем onCreate() пользовательского диалогового окна и
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
в моем отклонить().
Это открывает клавиатуру, когда появляется диалоговое окно, а также закрывает клавиатуру, когда я нажимаю кнопку «ОК».
Однако, если программная клавиатура открыта, и я нажму кнопку HOME на своем телефоне/эмуляторе, клавиатура останется открытой, поскольку, как я понял, я принудительно открываю ее с помощью SHOW_FORCED. Таким образом, я попытался скрыть (используя toggleSoftInput() из InputMethodManager) клавиатуру, если она открыта в методе onPause() родительской активности диалогового окна. кажется, что это возможно только с помощью обходного пути, как показано ЗДЕСЬ.
TL;DR: я хочу, чтобы виртуальная клавиатура отображалась при появлении диалогового окна с EditText и кнопкой (сосредоточьтесь на EditText). У меня это заработало, но пришлось написать много хаков, чтобы закрыть его должным образом.
Изменить: я основывал свой код на ЭТО