Android выполняет функцию после нажатия "Enter" для EditText

Я следовал официальным учебникам по Android и у меня возникли проблемы с этим очень простым примером выполнения функции после нажатия "Enter" для EditText.

Я понимаю, что должен делать, и, похоже, все настроено правильно, но Eclipse жалуется на эту строку:

edittext.setOnKeyListener(new OnKeyListener() {

Подчеркивает setOnKeyListener с ошибкой:

Метод setOnKeyListener(View.OnKeyListener) в типе View не применим для аргументов (new DialogInterface.OnKeyListener(){})

А также подчеркивает OnKeyListener с ошибкой:

Тип new DialogInterface.OnKeyListener () {} должен реализовывать унаследованный абстрактный метод DialogInterface.OnKeyListener.onKey(DialogInterface, int, KeyEvent)

Возможно, кто-то может выстрелить в меня в правильном направлении? Прежде чем я попробую другие решения (которые я уже нашел в stackru), я действительно хотел бы выяснить это, потому что меня взволновало то, что что-то такое простое, как официальное руководство, не похоже на работу.

Заранее спасибо.

3 ответа

Решение

Из того, что я вижу, похоже, что вы неправильно импортировали.

Пытаться

edittext.setOnKeyListener(new View.OnKeyListener() {

ИЛИ добавить этот импорт

import android.view.View.OnKeyListener;

и удалить этот

import android.content.DialogInterface.OnKeyListener;

Чтобы получить событие клавиатуры, представление должно иметь фокус. Чтобы заставить это использовать:

edittext.setFocusableInTouchMode(true);
edittext.requestFocus();

После этого продолжайте с тем же кодом в примере:

edittext.setOnKeyListener(new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // If the event is a key-down event on the "enter" button
        if ((event.getAction() == KeyEvent.ACTION_DOWN) &&
            (keyCode == KeyEvent.KEYCODE_ENTER)) {
          // Perform action on key press
          Toast.makeText(HelloFormStuff.this, edittext.getText(), Toast.LENGTH_SHORT).show();
          return true;
        }
        return false;
    }
});

Удалить оператор импорта, который имеет DialogInterfaceзатем импортируйте View.OnKeyListener,

Другие вопросы по тегам