Видна клавиатура android force

Моя функция, запускаемая из onResume(), не приводит к появлению клавиатуры.

Я делаю это неправильно?

private void showKeyboard() {
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(txtSearch, InputMethodManager.SHOW_FORCED);
txtSearch.requestFocus();}

person Ian Vink    schedule 19.08.2010    source источник
comment
Вы уверены, что вызывается onResume(), а не что-то еще вроде onStart()? Может быть, добавить несколько тостов или строк печати и посмотреть на logcat? Я обнаружил, что это часто моя проблема с такими вещами.   -  person Mike    schedule 19.08.2010
comment
@Mike Вместо того, чтобы разбрызгивать операторы печати, просто прочитайте документацию по жизненному циклу активности. developer.android.com/reference/android/app/ Как вы можете видеть, onResume будет вызываться каждый раз, когда активность попадает в фокус.   -  person Cheryl Simon    schedule 19.08.2010


Ответы (2)


Мягкая клавиатура иногда может быть сложной. Я верю, что последняя строка, txtSearch.requestFocus(), не нужна и может на самом деле все испортить. Сказав клавиатуре SHOW_FORCED в txtSearch, вы уже говорите ей, что она имеет фокус.

person Cheryl Simon    schedule 19.08.2010
comment
Хм. Я пробовал с этой линией и без нее. Это был сложный тест, мне не удалось успешно показать клавиатуру с помощью кода. - person Ian Vink; 19.08.2010

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); может помочь вам. Обратите внимание, что существуют устройства Android с аппаратными клавиатурами. например. У устройств GoogleTV часто нет сенсорного экрана, но есть аппаратная клавиатура. Некоторые даже эмулируют сенсорный экран.

Это актуально, если вы разрабатываете в эмуляторе:

http://plainoldstan.blogspot.com/2010/09/android-set-focus-and-show-soft.html

«Экспериментируя, я на самом деле не получал того, что хотел, пока не понял, что у меня должен быть эмулятор устройства без аппаратной клавиатуры:»

person Marcus Wolschon    schedule 11.07.2011
comment
Я только что подтвердил, что show_forced работает, но только на реальных устройствах без аппаратной клавиатуры и на эмуляторах, где вы ЯВНО установили, что эмулятор не имеет аппаратной клавиатуры. - person Marcus Wolschon; 11.07.2011