onKeyListener在Android中不触发事件



我有一个Activity和一个Fragment。这个片段有一个按钮,当我按下硬件键盘上的"enter"按钮时,我想要发生一些事情(我正在用adb keyevent测试它)。

我读了很多关于stackoverflow的解决方案,但是没有一个是有效的。

这是我的片段代码:
btnPhoto = (Button) rootView.findViewById(R.id.taskBtnPhoto);
photoView = (ImageView) rootView.findViewById(R.id.taskPhotoView);
btnPhoto.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        takePhoto();
    }
});
btnPhoto.setFocusable(true);
btnPhoto.setFocusableInTouchMode(true);
btnPhoto.requestFocus();
btnPhoto.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (KeyEvent.KEYCODE_VOLUME_UP == keyCode) {
            doFoo();
            return true;
        }
        return false;
    }
});

这段代码位于我的代码片段的onCreateView部分。使用debug,当我从ADB启动KeyEvent或使用手机的硬件键(音量键)时,该事件永远不会触发。

public static class MyFragment extends Fragment {
        @Override
        public void onResume() {
            super.onResume();
            getView().setFocusableInTouchMode(true);
            getView().requestFocus();
            getView().setOnKeyListener(new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    //YOUR CODE
                    return false;
                }
            });
        }
    }

最新更新