我正在使用平板电脑中的主从布局,在左侧有几个按钮可以打开多个片段,其中一个片段包含了Youtube播放器。
问题:
当Youtube播放器全屏时,按下返回键会调用activity的onBackPressed
方法,导致整个活动被关闭。
我尝试过的:
1. 为父片段(包含Youtube片段)添加键盘事件监听器,并在点击“返回”键时进行处理,但是只有当播放器没有全屏时才会调用此监听器,否则不会调用;
rootView.setFocusableInTouchMode(true);
rootView.requestFocus();
rootView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
try {
// Close full screen
return true;
} catch (Exception e) {
AHHExceptionHandler.handleException(e);
}
}
return false;
}
});
2- 添加了 onKeyListener 到 youtubeFragment 视图,以检查其是否处于全屏模式,然后关闭全屏模式。
youTubeFragment.getView().setFocusableInTouchMode(true);
youTubeFragment.getView().requestFocus();
youTubeFragment.getView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
try {
youTubePlayer.setFullscreen(false);
return true;
} catch (Exception e) {
AHHExceptionHandler.handleException(e);
}
}
return false;
}
});
这并非在所有情况下都称为。
当 YouTube 播放器处于全屏状态时,我需要处理硬件返回按钮,然后关闭全屏模式,使应用程序恢复其先前的状态。
谢谢。
编辑1: - 我想在片段内处理此问题,而不是在父 Activity 中处理它。虽然我已经在父 Activity 中处理了它,但我不喜欢这种解决方案。