У меня есть Activity
, который воссоздается при изменении конфигурации (желательно). У меня есть DialogFragment
, который вызывает setRetainInstance(true)
с одним EditText
в своем макете.
В DialogFragment onActivityCreated
я вызываю:
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
A) Если я открою клавиатуру, тогда, когда я помещу приложение в фоновый режим, а затем верну его в исходное поле, , я хочу, чтобы клавиатура все еще отображалась.
B) Если я закрою клавиатуру (EditText все еще имеет фокус и показывает курсор, который является желательным поведением), то Я хочу, чтобы клавиатура все еще была закрыта, если я положил приложение на задний план, а затем принесу это на первый план.
Кажется, я не могу достичь как A), так и B). Клавиатура всегда закрыта, когда я приношу приложение на передний план. Я пробовал .SOFT_INPUT_STATE_ALWAYS_VISIBLE, но тогда клавиатура всегда открыта.
Заранее благодарим за любые предложения относительно того, как я могу это достичь. Я также хочу поддерживать такое состояние клавиатуры во вращении, но я оставляю это на другой день. Питер.
Edit Обратите внимание, что я не могу не не допустить повторного создания активности при изменении конфигурации.
Я также экспериментировал с WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED
, который поддерживал открытое/закрывающееся состояние клавиатуры во время вращения на телефоне (макет одиночной панели), но a) не работал с макетом двойной панели. b) не поддерживал состояние клавиатуры при приведении приложение на передний план.