Я отображаю диалог с видом редактирования текста.Однако программная клавиша открывается только в том случае, если пользователь нажимает внутри окна редактирования.Поэтому я попытался вызвать InputMethodManager со следующим кодом.
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(dialogField,0);
dialogField является полем ввода.Однако когда именно я должен это сделать?Я попробовал это в методе 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, прежде чем откроется диалоговое окно.Но тогда он не закроется при выходе.И я могу сделать это только ДО того, как покажу диалог.Внутри любых обратных вызовов это тоже не работает.