Мы работаем над нашим первым Android-приложением, и до сих пор это был очень приятный опыт. Он почти завершен, но до выпуска у нас есть некоторые соображения, в основном о клавиатуре Android.
У нас есть пара полей EditText, которые используются для ввода чисел. Мы хотели бы зафиксировать событие, когда пользователь нажимает кнопку ввода, и делать некоторые расчеты и экономить на этом обратном вызове.
Проблема в том, что мы не получаем фиксированное событие, поскольку разные телефоны имеют разные клавиатуры. У некоторых есть кнопка "Готово", а у наших телефонов HTC есть кнопки 'Enter'. Мы попытались использовать imeOptions как "сделанные", но это не повлияло на телефоны HTC.
Мы также знаем, что клавиатура может быть уволена, нажав кнопку "Назад" . Поэтому мой вопрос заключается в том, есть ли надежный способ узнать, когда пользователь остановился, или когда клавиатура скрыта, точно так же, как textFieldShouldReturn callback в iphone sdk (который всегда срабатывает при смене клавиатуры, независимо от того, какой ключ заставлял его спускаться).
Другими словами, , как разработчик Android работает с мягкой клавиатурой. Я проверяю KeyEvent.KEYCODE_ENTER на событие editText onClick() и делаю мои задачи там. Он работает на моем Android-телефоне Android, но не на моем телефоне друзей Nexus, у которого есть кнопка, а не кнопка ввода. Там onClick даже не называется. Как разработчик справляется с этим?
РЕДАКТИРОВАТЬ: После потери половины моих волос и с помощью некоторых хороших друзей здесь
Я пробовал все ваши предложения, но в конце использование метода onEditorActionListener вместе с методом onKeyListener сделало трюк для меня. В onEdit обратном вызове onEditorActionListener я проверил KeyCode ACTION_DONE, который вызывался на клавиатурах с нажатой кнопкой. На клавиатурах, которые входят в onKey, вызывается. В методе onKey я также проверил KEYCODE_BACK, чтобы также можно было обработать событие резервного копирования оборудования. Я еще не обнаружил Android-устройство с готовым и введите на клавиатуру (серьезно), но я даже обработал этот случай флагом. Спасибо @Femi за предложение onEditorActionListener и спасибо всем друзьям за вашу помощь. Но ответ на мой оригинальный вопрос
Q: Есть ли надежный и простой способ узнать, как отключить мягкую клавиатуру Android (обратный вызов, который работает на каждом телефоне)
Ans: Нет, все предложенные здесь методы и все методы, предлагаемые на других сайтах, не являются простыми. И я думаю, что обработка события для клавиши возврата клавиатуры - самая простая вещь для любой операционной системы. Google, вы там?