почему ключевые события не выполняются, когда кнопка сфокусирована?

У меня есть кнопка, сфокусированная на представлении. Также у меня есть переопределенный метод onKeyDown().

Теперь, когда кнопка нажимается с помощью пульта дистанционного управления, вызывается onClickListener, но почему onKeyDown() не вызывается.


person Gowtham    schedule 12.12.2017    source источник
comment
Скорее всего, Button использует событие (например, ваш удаленный щелчок интерпретируется как нажатие клавиши Enter). Однако без минимально воспроизводимого примера трудно сказать наверняка.   -  person CommonsWare    schedule 12.12.2017
comment
покажи свой код плз   -  person Nouman Ch    schedule 12.12.2017


Ответы (1)


onKeyDown() и onKeyUp() оба события больше подходят для аппаратной кнопки. Хотя эти события также совместимы с программной кнопкой. Эти оба события не поддерживают изменение фокуса.

Чтобы получить событие изменения фокуса, вы можете использовать OnFocusChangeListener(), это будет лучшей практикой.

button.setOnFocusChangeListener(new OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            if (hasFocus) {
                //Toast line...
            }
        }

    });
person Dipendra Sharma    schedule 12.12.2017