Я показываю диалог с видом edittext. Тем не менее, программная клавиатура откроется, только если пользователь нажимает на редактирование. Поэтому я попытался вызвать InputMethodManager со следующим кодом.
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(dialogField,0);
Диалоговое окно - это поле ввода. Однако, когда я должен это делать? Я попробовал его в методе onStart() диалога, но ничего не происходит. Я также попробовал запросить фокус для dialogField раньше, но это ничего не меняет.
Я также пробовал этот код
dialogField.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
public void onFocusChange (View v, boolean hasFocus)
{
if (hasFocus)
{
Main.log("here");
dialogInput.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
/*
InputMethodManager mgr =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(dialogField,0);
*/
}
}
});
в обеих версиях. Но никакая мягкая клавиатура не хотела бы появляться. Main.log - это всего лишь журнал, который показывает мне, что функция фактически вызвана. И да, это называется.
Я могу получить клавиатуру с символом SHOW_FORCED перед открытием диалогового окна. Но тогда он не будет закрываться при выходе. И я могу сделать это только до того, как я покажу диалог. Внутри любых обратных вызовов это тоже не работает.