используйте DB_HOST вместо DB_SERVER
Вы можете создать прослушиватель фокуса для EditText
в AlertDialog
, а затем получить AlertDialog
Окно
. Оттуда вы можете отобразить программную клавиатуру, вызвав setSoftInputMode
.
final AlertDialog dialog = ...;
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}
});
Я знаю, что этот вопрос устарел, потому что я думаю, что использование функции расширения - более красивый способ показать клавиатуру для текста редактирования.
вот метод, который я использую, чтобы показать клавиатуру для текста редактирования.
код котлина: просто нужно позвонить edittext.showKeyboard()
fun EditText.showKeyboard() {
post {
requestFocus()
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}
}
код Java:
public static void showKeyboard(EditText editText) {
editText.post(new Runnable() {
@Override
public void run() {
editText.requestFocus();
InputMethodManager imm = (InputMethodManager) editText.getContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
});
}
Взгляните на это обсуждение , в котором выполняется ручное скрытие и отображение IME. Однако я считаю, что если сфокусированный EditText
не вызывает IME, это потому, что вы вызываете AlertDialog.show ()
в своем OnCreate ()
или какой-либо другой метод, который вызывается перед фактическим представлением экрана. Я считаю, что перемещение его в OnPostResume ()
должно исправить это в этом случае.