Android: проблема с переопределением onKeyListener для кнопки - PullRequest
3 голосов
/ 04 октября 2010

Мне нужна определенная функциональность при нажатии клавиши Enter на кнопке. Когда я переопределяю onKey (), я пишу код, который будет выполнен для KEY_ENTER. Это отлично работает.

setupButton.setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (KeyEvent.KEYCODE_ENTER == keyCode)
                {
                    Intent setupIntent = new Intent(getApplicationContext(),SetUp.class);
                    startActivityForResult(setupIntent, RESULT_OK);
                }
                return true;
            }
        });

Но никакие другие клавиши для кнопки теперь не работают, такие как клавиши со стрелками вверх, вниз и т.д.

Но есть ли способ сохранить функциональность для всех других клавиш и переопределить только для некоторых определенных клавиш?

Примечание: все это потому, что мой onClick () не вызывается при нажатии клавиши Enter. Следовательно, мне нужно переопределить сам OnKey ().

- Kiki

1 Ответ

5 голосов
/ 04 октября 2010

Когда вы возвращаете true в функции, которая сообщает Android, что вы обрабатываете все клавиши, а не только клавишу Enter.

Вы должны возвращать true только в конце, внутри оператора if и возвращать false в конце функции.

setupButton.setOnKeyListener(new OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (KeyEvent.KEYCODE_ENTER == keyCode)
            {
                Intent setupIntent = new Intent(getApplicationContext(),SetUp.class);
                startActivityForResult(setupIntent, RESULT_OK);
                return true;
            }
            return false;
        }
    });
...