Запутался по поводу обработки событий ключа Android. Есть хорошие объяснения? - PullRequest
3 голосов
/ 16 сентября 2010

Я относительный новичок в Android. У кого-нибудь есть вменяемое объяснение того, как прослушивать клавиши и программные клавиши в EditText / TextView?

Я бы хотел увидеть подробное руководство или набор примеров.

Насколько я понимаю, я могу добавить KeyListener в свою активность, например onKeyDown (), onKeyUp (), но когда я пытаюсь это сделать, я не могу вызвать события для обычных клавиш только HOME и BACK, например.

Я видел упоминание об использовании TextWatcher, но это не то же самое, что обработка необработанных ключевых событий.

Кажется, здесь есть несколько полурешолей в SO. Надеюсь, что вы можете помочь очистить туман путаницы ...

Ответы [ 3 ]

2 голосов
/ 16 сентября 2010

Это то, что мне нужно для прослушивания событий клавиш НАЗАД или МЕНЮ.Просто добавьте этот метод, не реализуя интерфейс.Я делаю это в своей BaseActivity, от которой наследуется каждое действие.

public boolean onKeyDown(int keyCode, KeyEvent event) {
    Log.d(NAME, "Key pressed");

    switch (keyCode) {
    case KeyEvent.KEYCODE_BACK:
        Log.d(NAME, "Back pressed");
        // IGNORE back key!!
        return true;
        /* Muestra el Menú de Opciones */
    case KeyEvent.KEYCODE_MENU:
        Intent menu = new Intent(this, Menu.class);

        // start activity
        startActivity(menu);
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

PS: я настоятельно не рекомендую игнорировать клавишу возврата.

2 голосов
/ 16 сентября 2010

Вы должны назначить ключевого слушателя не для активности, а для самого EditText.

1 голос
/ 01 декабря 2010

Например:

myEditText.setOnKeyListener(new OnKeyListener() {
     public boolean onKey(View v, int keyCode, KeyEvent event) {
         if (event.getAction() == KeyEvent.ACTION_DOWN)
             if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
                //your code here
             }
         return false;
     }
});
...