Скажите, что у меня есть активность, которая показывает фрагмент A. От фрагмента A я нажимаю кнопку, чтобы переключиться на фрагмент B. На фрагменте A я скрываю мягкую клавиатуру в методе onPause(). На фрагменте B я показываю мягкую клавиатуру в методе onResume().Android-клавиатура: скрыть и сразу показать
Теперь, когда я нажимаю кнопку, отображается фрагмент B, но клавиатура не отображается, что не очень хорошо. Если фрагмент A не использует клавиатуру (удалите код скрытой клавиатуры в onPause()), тогда он отлично работает.
Я установил точку останова, и определенно фрагмент A onPause вызывается перед onResume() фрагмента B. Так что в теории я думаю, что клавиатура все равно должна быть показана, несмотря ни на что.
Любая идея?
То, что я подозреваю, заключается в том, что вызовы скрыть и показать клавиатуру планируют запустить в потоке пользовательского интерфейса, после чего шоу происходит почти сразу после скрыть. Поскольку клавиатура занимает некоторое время для анимации с экрана, я подозреваю, что команда show вычеркнута из обработчика пользовательского интерфейса и пытается выполнить, но обнаруживает, что клавиатура все еще там, так что ничего не делает. – Karakuri
Вот что я подозреваю. Но сделать задержку - это не чистый путь. Интересно, есть ли лучший способ. – namanhams
Лично я бы не манипулировал клавиатурой в onPause()/onResume(). – Karakuri