У меня есть две действия, которые говорят A и B. Активность A имеет реализацию обработки событий для таких ключей, как CHANNEL_UP и CHANNEL_DOWN. Теперь, когда активность B видна и все клавиши нажаты, завершение вызывается на B. В таких случаях обработка ключа должна распространяться на Activity A. Но метод OnKeyDown Activity A даже не вызван. Код для Activity B onkeyDown приведен ниже.обработчик события onKeyDown не распространяется на android
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode) {
case KeyEvent.KEYCODE_CHANNEL_UP:
case KeyEvent.KEYCODE_CHANNEL_DOWN:
finish();
break;
}
return false;
}
Это был бы вариант, но согласно документации по http://developer.android.com/reference/android/view/KeyEvent.Callback.html#onKeyDown(int.android.view.KeyEvent) false должен быть возвращен в чтобы позволить следующему приемнику справиться с этим. – mobiledev
Это правда, но вы заметите, что он находится в пакете android.view. Это позволит другим представлениям обрабатывать событие, но они не пересекают границы активности afaik. – Buddy
Я не уверен, что это так. Кажется, что dispatchKeyEvent Activity A вызывается, но с действием ACTION_UP может быть, потому что onkeydown уже обрабатывается в Activity B. В любом случае, в моем случае предложенный вами ответ может оказаться лучше. – mobiledev