Intereting Posts
Телефонная заставка для Android и экран заставки растягиваются для планшета Установить текст в TextView в плохой производительности обработчика Как установить задержку в функции Android onClick Изменить цвет растрового изображения Как защитить активы, хранящиеся в Android APK Маршрут отображения API Google Maps API v2 Я предложил пользователю включить gps-настройки, но как я могу проверить, действительно ли пользователь включил местоположение gps на своем телефоне? Странное мигание на клиенте удаленного управления блокировкой при остановке его от самого клиента Android ProgressDialog не вращается Как получить изображение профиля Facebook в Android Android: родительский фрагмент вложенного фрагмента Android и макеты Как отключить собственное приложение facebook для входа в систему Форматирование номера телефона EditText в качестве пользовательских типов Может ли кто-нибудь объяснить разницу между передачей контекста активности внутреннему классу и просто ссылкой на него с помощью MyActivity.this?

Android softkeyboard showSoftInput vs toggleSoftInput

showSoftInput() не показывает клавиатуру для меня, но toggleSoftInput() . Я видел еще одну запись, которая говорила, что отключает жесткую клавиатуру при использовании эмулятора, но я не использую эмулятор. Я загружаю APK на реальном устройстве без жесткой клавиатуры. Не должны ли работать оба метода? Почему не работает showSoftInput() ? Я хотел бы явно связать клавиатуру с конкретным текстовым полем.

Не работает:

 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); editText.setText("textchange"); //i see the text field update imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED); 

Работает:

 InputMethodManager imm = (InputMethodManager) getDelegate().getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 

Кажется, что клавиатура изначально отображается, но скрыта чем-то другим, потому что следующее работает (но на самом деле грязно работает):

 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); editText.postDelayed(new Runnable() { @Override public void run() { editText.requestFocus(); imm.showSoftInput(editText, 0); } }, 100); 

И, глядя на логарифм, я подозреваю, что причина этого сообщения скрывает первоначально показанную клавиатуру:

Скрыть диалог буфера обмена при запуске ввода: завершено кем-то еще …!

Показать клавиатуру + фокус, а также, если вы хотите скрыть клавиатуру

 @Override public void onResume () { super.onResume(); inputSearch.setFocusableInTouchMode(true); inputSearch.requestFocus(); // Show Keyboard InputMethodManager imm = (InputMethodManager) getSherlockActivity().getSystemService( Context.INPUT_METHOD_SERVICE); imm.showSoftInput(inputSearch, InputMethodManager.SHOW_IMPLICIT); } 

PS inputSearch = (EditText) getSherlockActivity (). FindViewById (R.id.inputSearch);

  // Hide Keyboard InputMethodManager imm = (InputMethodManager) getSherlockActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(inputSearch.getWindowToken(), 0); 

Точный ответ на этот вопрос, почему showSoftInput не работает, и toggleSoftInput делает?

Разве что представление, к которому вы пытаетесь отобразить Клавиатуру, не имеет фокуса. Поэтому для решения этой проблемы и использования метода showSoftInput вам нужно будет вызвать следующие методы на вашем представлении:

  setFocusable(true); setFocusableInTouchMode(true); 

Вызов вышеуказанных методов позволит убедиться, что при нажатии на «Просмотр» сохраняет и фиксирует фокус.

ShowSoftInput () не работает, когда устройство имеет жесткую (выдвижную) клавиатуру

Android-дисплей софт-клавиатурой с showSoftInput не работает?

Попробуй это:

 public void showTheKeyboard(Context context, EditText editText){ InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); } 

Если это не работает, прочитайте учебник отсюда

 public void hideKeyboard() { myTextView.setFocusable(true); myTextView.setFocusableInTouchMode(true); imm.hideSoftInputFromWindow(myTextView.getWindowToken(), 0); } 

РАБОТАЕТ

 public void hideKeyboard() { imm.hideSoftInputFromWindow(myTextView.getWindowToken(), 0); } 

НЕ РАБОТАЕТ

Imm рассматривается ранее, когда я использую фрагмент, поэтому:

Объявить им во Фрагменте

 private InputMethodManager imm; 

Затем в фрагменте добавьте:

 @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); } 

Он говорит после 3 – 4 часов исследований и неудач!

Спасибо user_CC! 🙂

Фил