Как отловить нажатие на стандартной клавиатуре андроид?

Рейтинг: 1Ответов: 3Опубликовано: 22.04.2015

Такая проблема. Пришел дизайн. в дизайне такая штука и к ней описание. Есть активити. В активити только одно поле EditText. В него нужно ввести email. После того как он введен, нужно нажать кнопку "готово" которая перебросит на другое активити, в котором есть тоже поле емаил и туда подставится введеный нами на предыдущем активити.

Я считаю что это бред. Но делать нужно.

  1. Такое возможно вообще?
  2. Все ли клавиатуры имеют кнопку "готово" или "go" или еще как то называются?
  3. Какие могут быть проблемы с такой реализацией.

  4. Если это возможно -как это сделать?

Ответы

▲ 2Принят

Если в данном случае интересует именно кнопка на клавиатуре - реальной или программной, то советую почитать здесь о перехвате и обработке нажатий

▲ 2

Для кнопки "Готово" есть специальный обработчик. Выглядит он примерно так:

editText.setOnEditorActionListener(new EditText.OnEditorActionListener() {

                @Override
                public boolean onEditorAction(TextView v, int actionId,
                        KeyEvent event) {
                    if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER))
                            || (actionId == EditorInfo.IME_ACTION_DONE)) {
                        //сделать, что нужно по нажатию на Done
                    }
                    return false;
                }
            });

Кроме того, чтобы собственно эта кнопка "Done" появлялась при вводе в определенное поле, у него нужно указать атрибут

android:imeOptions="actionDone"
▲ 1

Видом кнопки Enter управляет аттрибут: android:imeOptions

например :

android:imeOptions = "actionDone"

выведет надпись Готово (в русской локализации , при поддержке клавиатурой ) вместо кнопки Enter.
Такая реализация не приведет ни к каким проблемам .
Именно надпись Готово появится в случае поддержки клавиатурой русской локализации , иначе это будет надпись Done.