Надежный способ узнать, когда уходит в отставку программная клавиатура Android (обратный вызов, который работает на всех телефонах)

Мы работаем над нашим первым приложением для Android, и до сих пор это было очень приятным опытом. Он почти готов, но перед выпуском у нас есть некоторые соображения, в основном о программной клавиатуре Android.

У нас есть пара полей EditText , которые используются для ввода чисел. Мы хотели бы зафиксировать событие, когда пользователь нажимает клавишу ввода, и выполнить некоторые вычисления и сэкономить на этом обратном вызове.

Проблема в том, что мы не получаем фиксированное событие, поскольку разные телефоны имеют разные клавиатуры. У некоторых есть кнопка «Готово», а в наших телефонах HTC есть кнопки «Ввод». Мы пробовали использовать imeOptions как «готово», но это не повлияло на телефоны HTC.

Мы также знаем, что клавиатуру можно закрыть, нажав кнопку возврата . Итак, мой вопрос: есть ли надежный способ узнать, когда пользователь прекратил ввод или когда клавиатура скрыта, точно так же, как обратный вызов textFieldShouldReturn в iphone sdk (который всегда срабатывает, когда клавиатура отключается, независимо от какая клавиша вызвала его отключение) ..

Другими словами, как разработчик Android обрабатывает программную клавиатуру? Я проверяю KeyEvent.KEYCODE_ENTER в editText onClick ( ) и выполняю там свои задачи. Он работает на моем HTC Android, но не на телефоне моих друзей Nexus, на котором вместо ввода есть кнопка «Готово». Там onClick даже не вызывается. Как с этим справляется разработчик?

РЕДАКТИРОВАТЬ: потеряв половину волос, и с помощью некоторых хороших друзей здесь

я испробовал все ваши предложения, но в конце использование onEditorActionListener вместе с методом onKeyListener помогло мне. В обратном вызове onEdit для onEditorActionListener я проверил KeyCode ACTION_DONE , который действительно вызывался на клавиатуре с помощью кнопки «Готово». На клавиатуре, которая имеет вход onKey, вызывается. В методе onKey я также проверил KEYCODE_BACK , так что событие аппаратного обратного нажатия также может быть обработано. Я еще не обнаружил Android-устройство с готовым и вводом на клавиатуре (серьезно), но я даже обработал этот случай с флагом. Спасибо @Femi за предложение onEditorActionListener и спасибо всем друзьям за вашу помощь. Но ответ на мой первоначальный вопрос

Q: Есть ли надежный и простой способ узнать об отставке программной клавиатуры Android (обратный вызов, который работает на каждом телефоне)

Ответ: Нет, все методы, предлагаемые здесь, и все методы, предлагаемые на других сайтах, непросты. И я думаю, что обработка события для клавиши возврата с клавиатуры - самая простая вещь для любой операционной системы. Google, ты здесь?

24
задан Krishnabhadra 2 June 2011 в 03:29
поделиться