我的活动中有6个(列表)片段。如果点击元素,将启动VideoView。视频启动后,我按下后退按钮,应用程序完全完成活动,而不是返回到保存碎片的活动。
在我的活动中,我使用ViewPager并设置适配器。
我知道当我在视频中按下后退按钮时,我的Activity的onBackPressed方法被调用。但是,当VideoView启动它返回Activity时,如何处理它?
答案 0 :(得分:0)
您可以查看FragmentTransactions,以便正确地允许backPress返回您的活动。
如果您想要一个简单但“糟糕”的解决方案,您可以使用变量来了解用户正在观看视频,并覆盖“onBackPressed”,如下所示:
private VideoView isPlaying;
您定义点击侦听器,注册VideoView播放:
isPlaying=video_playing;
然后覆盖你的OnbackPressed:
@Override
public void onBackPressed() {
if(isPlaying!=null) {
isPlaying.setVisibility(View.GONE); //Or anything that make it disappear
isPlaying=null;
} else {
super.onBackPressed();//If not, let's let the user quit the app correctly
}
}
即使是简单的处理也是一种糟糕的方式,因为如果你必须在其他地方使用你的片段,你将必须以与其他地方完全相同的方式处理onBackPressed(),并且如果出现错误,你将不得不到处纠正它。编程时复制/过去是一个糟糕的实践。 但是,当项目必须进展时,这可能是使其工作的临时方式,但要注意,如果你经常开发它,你可能会后悔。