Java Android将keyEvent传递到下一个后续视图

Java Android将keyEvent传递到下一个后续视图,java,android,Java,Android,我在窗口管理器中添加了一个自定义视图,将focusInTouchMode设置为true,并为其请求焦点,以便我可以侦听'onKeyDown() 我只需要KEYCODE\u VOLUME\u UP和VOLUNE\u DOWN键,其他任何键都返回false。但问题是,KEYCODE_BACK从未通过我的视图传递,活动没有收到它,因此它们不会处理BACK按钮。有什么办法处理这个问题吗 @Override public boolean onKeyDown(int keyCode, KeyEvent ev

我在
窗口管理器中添加了一个自定义视图
,将
focusInTouchMode
设置为true,并为其请求焦点,以便我可以侦听'onKeyDown()

我只需要KEYCODE\u VOLUME\u UP和VOLUNE\u DOWN键,其他任何键都返回false。但问题是,KEYCODE_BACK从未通过我的视图传递,活动没有收到它,因此它们不会处理BACK按钮。有什么办法处理这个问题吗

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_VOLUME_UP ||
            keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {

        // Handling the event
    } else if (keyCode == KeyEvent.KEYCODE_BACK) {
        this.setFocusable(false);
        this.setFocusableInTouchMode(false);
        this.clearFocus();
    }

    return false;
}

为什么要为此添加自定义视图,而不是在根视图上设置侦听器?@Gabeschen我已经添加了一个自定义视图,我也想为此重用它。如果在根视图上设置了
onKeyDown
,它会改变什么吗?是的,您将是普通键事件链的一部分。向窗口管理器添加任何内容实际上都是一种非常不寻常的行为——我唯一一次这样做是直接从服务显示对话框。这样做几乎总是错误的。当然,如果你发布了你的代码,就更容易看出你是否在做一些奇怪的事情。@Gabeschen刚刚编辑过它。此外,我还需要在后台收听音量键(我还附带了一个服务),并且与我的应用程序的活动无关。因此,此功能根本不会接收“后退”按钮,但它会在按下BackButton时转到单独的活动级别。那是正确的发射,还是不正确的发射?