Android выполняет функцию после нажатия «Enter» для EditText - PullRequest
12 голосов
/ 23 ноября 2011

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

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

edittext.setOnKeyListener(new OnKeyListener() {

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

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

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

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

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

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

Ответы [ 3 ]

50 голосов
/ 23 ноября 2011

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

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;
    }
});
12 голосов
/ 23 ноября 2011

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

Попробуйте

edittext.setOnKeyListener(new View.OnKeyListener() {

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

import android.view.View.OnKeyListener;

и удалите этоодин

import android.content.DialogInterface.OnKeyListener;
2 голосов
/ 23 ноября 2011

Удалите инструкцию импорта с DialogInterface, затем импортируйте View.OnKeyListener.

...