EditText в AlertDialog не фокусируется автоматически на Android 9 (API 28)

У меня EditText в AlertDialog.

Чтобы показать мягкую клавиатуру, когда отображается AlertDialog, я вызываю

alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

прежде чем звонить

alertDialog.show();

До сих пор это работало нормально. Но этот же код не работает на Android 9 (API 28). Кажется, что EditText не фокусируется автоматически, и поэтому программная клавиатура не отображается.

Как я могу исправить это, чтобы программная клавиатура отображалась автоматически, когда AlertDialog отображается на Android 9?




Ответы (2)


Я мог бы решить эту проблему, просто позвонив

editText.requestFocus();

перед показом предупреждения.

person kaolick    schedule 04.11.2018

На нем есть несколько решений:

Во-первых:

<EditText ...>
  <requestFocus />
</EditText>

Второе:

<Your Layout 
    android:focusable="true"
    android:focusableInTouchMode="true" 
    android:clickable="true"
    android:layout_width="0px"
    android:layout_height="0px" />

То есть: ниже двух строк вы можете добавить его в свой родительский макет.

android:focusable="true"
android:focusableInTouchMode="true" 

Третье:

editText.setFocusable(true);

Четвертый:

<EditText ...>
  android:focusable="true"
</EditText>

И много разных способов есть, все предпочтительнее.

person Rushikesh Pundkar    schedule 25.10.2018
comment
К сожалению, ни одно из ваших решений здесь не работает. Вы пробовали это на Android 9? - person kaolick; 25.10.2018
comment
Хорошо, @kaolick позвольте мне проверить альтернативное решение. - person Rushikesh Pundkar; 25.10.2018
comment
Ах, моя ошибка. Я попробовал ваши решения в неправильной части моего кода. Простите за это. - person kaolick; 04.11.2018