showSoftInput не работает после смены ориентации
У меня есть фрагмент с одним редактируемым текстом, который требует, чтобы мягкая клавиатура оставалась постоянно открытой. Клавиатура скрывается при повороте экрана. Я вызываю showSoftInput в OnActivityCreated, который выполняется после вращения, но он не показывает клавиатуру.
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(edit, 0);
Примечание: я не хочу использовать toggleSoftInput. Я пробовал это, но в некоторых случаях это приводит к закрытию клавиатуры. И нет никакого способа запросить android, чтобы определить, есть ли клавиатура уже открывать.
2 ответа:
Похоже, что showSoftInput очень перегружен фрагментами.
Сначала попробуйте решение @TronicZomB. Он работает для деятельности с одним фрагментом.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
Однако для действия с вложенными FragmentTransactions вы будете вынуждены использовать toggleSoftInput с параметрами SHOW_FORCED и HIDE_NOT_ALWAYS. HIDE_NOT_ALWAYS запрещает команде toggle закрывать уже открытую клавиатуру после изменения ориентации.
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_NOT_ALWAYS);
Чтобы скрыть клавиатуру позже время, которое вы можете использовать:
imm.hideSoftInputFromWindow(activity.findViewById(android.R.id.content).getWindowToken(), 0);