由于未经授权覆盖播放器,YouTube视频播放停止。 YouTubePlayerView未包含在其祖先ViewPager中

时间:2016-09-06 13:22:59

标签: android youtube-api android-youtube-api

我在(支持)ViewPager中使用YouTubePlayerSupportFragment时遇到问题。除非我将视频放在全屏上然后减少它,否则一切正常。它将不再在Viewpager中播放。

Logcat错误:

  

W / YouTubeAndroidPlayerAPI:YouTube视频播放因此而停止   未经授权的覆盖在玩家之上。 YouTubePlayerView不是   包含在它的祖先里面   com.google.android.youtube.player.YouTubePlayerView {2fcbbe15 V.E .....   ...... ID 0,0-1920,919}。祖先的边缘与之间的距离   YouTubePlayerView的内容是:left:0,top:0,right:0,bottom:   -281(这些都应该是正面的)。

这是我的(简化)代码:

fragment_home.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/white"/>

    <TextView
        android:id="@+id/fragment_home_no_news_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="gone"
        android:text="@string/home_home_title_no_news"/>

</RelativeLayout>

GSYoutubeFragment.java

public class GSYoutubeFragment extends YouTubePlayerSupportFragment implements YouTubePlayer.OnInitializedListener, OnBackPressedListener, YouTubePlayer.OnFullscreenListener {
    private static final String KEY_VIDEO_ID = "VIDEO_ID";

    String mVideoId;
    YouTubePlayer mPlayer;
    boolean mIsFullScreen;

    public static GSYoutubeFragment newInstance(String videoId) {
        GSYoutubeFragment frag = new GSYoutubeFragment();

        Bundle args = new Bundle();
        args.putString(KEY_VIDEO_ID, videoId);

        frag.setArguments(args);

        return frag;
    }

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);

        if (getArguments() != null) {
            mVideoId = getArguments().getString(KEY_VIDEO_ID);
        }

        initialize("myapikey, you won't see it :)", this);
    }

    @Override
    public void onResume() {
        super.onResume();

        ((GSActionBarActivity) getActivity()).addOnBackPressedListener(this);
    }

    @Override
    public void onPause() {
        super.onPause();

        ((GSActionBarActivity) getActivity()).removeOnBackPressedListener(this);
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
        mPlayer = youTubePlayer;
        youTubePlayer.setOnFullscreenListener(this);
        youTubePlayer.cueVideo(mVideoId);
    }

    @Override
    public void onBackPressed() {
        if (mPlayer != null && mIsFullScreen) {
            ((GSActionBarActivity)getActivity()).shouldIgnoreCurrentBackPressEvent();

            mPlayer.setFullscreen(false);
        }
    }

    @Override
    public void onFullscreen(boolean fullscreen) {
        mIsFullScreen = fullscreen;
    }
}

GSHomeFragment.java

public class GSHomeTabletFragment extends AbsGSHomeFragment implements ViewPager.OnPageChangeListener {

    private ViewPager mViewPager;
    private SlidingTabLayout mSlidingTabLayout;
    private HomeCursorPagerFragmentAdapter mNewsCursorPagerFragmentAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_home, container, false);

        mViewPager = (ViewPager) v.findViewById(R.id.pager);

        mNewsCursorPagerFragmentAdapter = new HomeCursorPagerFragmentAdapter(getActivity().getSupportFragmentManager(), this, null);
        mViewPager.setAdapter(mNewsCursorPagerFragmentAdapter);

        mSlidingTabLayout = getSlidingTabs();
        mSlidingTabLayout.setOnPageChangeListener(this);
        return v;
    }

    @Override
    public void onResume() {
        super.onResume();

        mNewsCursorPagerFragmentAdapter.setParentFragment(this);

        mSlidingTabLayout.showTabs();
        mSlidingTabLayout.setEnabled(true);
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        mSlidingTabLayout.hideTabs();
        mSlidingTabLayout.setEnabled(false);
    }

    @Override
    protected void onNewsLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
        mNewsCursorPagerFragmentAdapter = new HomeCursorPagerFragmentAdapter(getActivity().getSupportFragmentManager(), cursor);
        mViewPager.setAdapter(mNewsCursorPagerFragmentAdapter);

        mSlidingTabLayout.setViewPager(mViewPager);

        getLoaderManager().destroyLoader(LOADER_NEWS_ID);
    }

0 个答案:

没有答案