在Fragment

时间:2017-03-16 20:53:44

标签: android android-fragments android-videoview

我的活动中有6个(列表)片段。如果点击元素,将启动VideoView。视频启动后,我按下后退按钮,应用程序完全完成活动,而不是返回到保存碎片的活动。

在我的活动中,我使用ViewPager并设置适配器。

我知道当我在视频中按下后退按钮时,我的Activity的onBackPressed方法被调用。但是,当VideoView启动它返回Activity时,如何处理它?

enter image description here

1 个答案:

答案 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(),并且如果出现错误,你将不得不到处纠正它。编程时复制/过去是一个糟糕的实践。 但是,当项目必须进展时,这可能是使其工作的临时方式,但要注意,如果你经常开发它,你可能会后悔。