Я відображаю діалогове вікно з поданням редагування тексту. Однак програмна клавіатура відкриється, лише якщо користувач натисне всередині редагування. Тому я спробував зателефонувати 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 перед тим, як відкриється діалогове вікно. Але тоді він не закриється на виході. І я можу це зробити ПЕРЕД тим, як показати діалогове вікно. Усередині зворотних викликів він теж не працює.