2017-03-16 50 views
-1

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

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

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

enter image description here

回答

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(),如果发生错误,则必须更正它到处。编程时复制/过去是一个不好的实践。然而,当项目需要进展时,这可能是一个使其工作的临时方式,但请注意,如果您进行了大量开发,您可能会后悔。