У меня есть этот диалог (я упрощаю свой вариант использования):
class EditShoppingListDialog extends AlertDialog {
public EditShoppingListDialog(Context context) {
super(context/*, R.style.AppCustomDialog*/);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_addshoppinglist);
setTitle("Mike Testing");
}
}
Я создаю и использую этот подкласс AlertDialog вне метода OnCreateDialog (в onContextItemSelected моей деятельности) следующим образом:
AlertDialog dialog = new EditShoppingListDialog(this);
dialog.show();
Теперь я работаю с этой кодовой базой уже более месяца и никогда не видел никаких проблем, что заставляет меня задуматься, почему они рекомендуют использовать AlertDialog.Builder
для создания пользовательских диалогов.
Когда я развернул свое приложение на реальном устройстве, я сразу начал видеть проблемы. Наиболее блокирующим из них является то, что я не могу заставить программную клавиатуру (IME?) Отображаться, даже когда я нажимаю на поле EditText в AlertDialog.
Вот лучшая часть; Если я скажу:
class EditShoppingListDialog extends Dialog {
...
}
IME появляется автоматически, если я нажимаю на EditText в диалоговом окне. Я нашел этот поток , но принятое решение не работает с AlertDialog.
Однако я обнаружил, что выполнение этого в OnCreate моего производного AlertDialog помогает отображать IME, но оно скрывается за диалогом, и я не могу с ним взаимодействовать:
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,0);
Мне очень жаль за потерянный пост, но я потратил на это более 5 часов и был бы очень признателен за помощь. Причина, по которой я настаиваю на расширении AlertDialog, заключается в том, что мне нужен диалог без строки заголовка, и в документации Android Dialog говорится, что я не могу иметь диалог без строки заголовка.