Скрыть Программную Клавиатуру Не Работает


Я разрабатываю на Droid Incredible (и также протестировал на 1.5 AVD эмуляторе), и одна из вкладок в моем виджете tab состоит из listview и строки с EditText и кнопкой отправки (для функции чата). Я использую следующее, чтобы закрыть программную клавиатуру после нажатия кнопки Отправить, но это не работает. Это идентично коду, который я нашел в другом месте, который люди отклонили как правильный.

Видишь, я что-то упустил?

// in Button's onClick():
EditText chatTextBox = (EditText) findViewById(R.id.chat_entry);
// Handle button click ...
chatTextBox.setText("");

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(chatTextBox.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);

Я также попытался изменить флаг на 0. Нет удача. Кто-нибудь знает, что случилось??

****редактировать**** просто понял, что я был первоначально с помощью hideSoftInputFromInputMethod() вместо hideSoftInputFromWindow(). Однако изменение его не заставило его работать...

3 9

3 ответа:

Изменение HIDE_IMPLICIT_ONLY на 0 сделало это (после того, как я изменил на hideSoftInputFromWindow() из hideSoftInputFromInputMethod()).

Однако я не уверен, почему HIDE_IMPLICIT_ONLY не работает, так как я явно не открываю клавиатуру с длинным нажатием на меню.

Еще один вариант, чтобы предотвратить его активность в AndroidManifest.xml-файл

Android: windowSoftInputMode= "stateAlwaysHidden" - этот метод предотвратит загрузку/отображение клавиатуры при загрузке действия. Но при нажатии на редактируемый компонент, например edittext, откроется клавиатура. идеально подходит для моих требований.

<activity
            android:name=".Name"
            android:label="@string/app_name" 
            android:windowSoftInputMode="stateAlwaysHidden">

1.сначала свяжите маркер редактирования текста с клавиатурой и откройте
i. e inputMethodManager.showSoftInput(_edittext, 0); / / здесь _edittext-это экземпляр вида

2.клавиатура будет скрыта автоматически, если текст редактирования будет скрыт с экрана

3.редактировать текст по-прежнему на экране, но вы хотите скрыть клавиатуру, а затем использовать код ниже imm.hideSoftInputFromWindow(_edittext.getWindowToken(), 0); / / это не сработает, если edittext не находится на экране или не сфокусирован.