Любой безболезненный способ запускать мягкую клавиатуру для EditText в диалогах?

Я AlertDialog EditText как один из элементов AlertDialog стиле AlertDialog (который поддерживается реализацией ListView по умолчанию). Я вроде бы ожидал, что это обстоятельство не изменит поведение EditText, но оно делает: щелчок на EditText больше не порождает мягкую клавиатуру.

После часа беспорядка с настройками фокуса и обработчиками InputMethodManager.showSoftInput() я получил сытый и отлаженный в InputMethodManager.showSoftInput() , и нашел это:

  public boolean showSoftInput(View view, int flags, ResultReceiver resultReceiver) { ... if (mServedView != view && (mServedView == null || !mServedView.checkInputConnectionProxy(view))) { return false; } ... } } 

Проблема здесь в том, что mServedView – это ListView, который поддерживает диалог, а view – EditText, а ListView.checkInputConnectionProxy() просто return false в реализации ListView по умолчанию (для переопределения подклассами).

Хуже того, я не мог найти способ установить пользовательский ListView, который позволяет проксировать IME-запросы; AlertDialog.Builder.setView() принимает пользовательский ListView, но это не ListView, который видит InputMethodManager.

Любые предложения, как это решить?

Вы пробовали что-то подобное, извините, если у вас есть

 getBaseContext().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 

Позвольте мне предисловие к этому с большим жиром, я НЕ ЗНАЮ НИЧЕГО О АНДРОИДСКОМ SDK.

Это, как я сказал, я бы предложил: написать requestKeyboard throwable. Пусть ваш EditText выкинет requestKeyboard. Таким образом ListView может обрабатывать throwable, генерировать клавиатуру, а затем возвращать ввод в текст редактирования. Таким образом, mServedView == view

Я думаю.