Viewpager上的VideoView,切换页面时停止视频

Mic*_*eap 8 android android-viewpager android-videoview

我有一个包含不同片段的viewpager,其中一个片段中有视频片段.如果我在播放视频时切换页面,那么即使我在不​​同的页面上也会重新播放.我尝试为ViewPager实现一个OnPageChangeListener,如下所示:

viewpager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {

                if(position!=mAdapter.getCount()-1){
                    MultimediaFragment frag = (MultimediaFragment)mAdapter.getItem(position+1);
                    frag.onPageIsChanged();
                }

                if(position != 0){
                    MultimediaFragment frag = (MultimediaFragment)mAdapter.getItem(position-1);
                    frag.onPageIsChanged();
                }


            }
Run Code Online (Sandbox Code Playgroud)

使用onPageIsChanged()作为我自己的方法,它试图告诉我的videoview属性停止并隐藏控件:

public void onPageIsChanged() {
        if(mVideoView!=null){
            if(mVideoView.isPlaying()){
                mVideoView.stopPlayback();
            }
            mMedia.hide();
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是mVideoView总是为空,即使它在后台播放也是如此.此视频视图是在片段的OnCreateView方法上创建的,但在片段被销毁之前,它是否应保持设置为我的mVideoView字段?

Gab*_*tin 10

我通过覆盖方法解决了这个问题:

void setUserVisibleHint(boolean isVisibleToUser)
Run Code Online (Sandbox Code Playgroud)

不知道这是不是正确的方法.


Man*_*ola 6

你必须在你播放视频的片段中覆盖setUserVisibleHint方法.

   public void setUserVisibleHint(boolean isVisibleToUser) 
   {       
    super.setUserVisibleHint(isVisibleToUser);                         
     if (this.isVisible())
     {               
        if (!isVisibleToUser)   // If we are becoming invisible, then...
        {  
          //pause or stop video
        }

        if (isVisibleToUser) // If we are becoming visible, then...
        {                               
            //play your video               
        }
    } 
  }
Run Code Online (Sandbox Code Playgroud)