片段中的YoutubePlayerView

时间:2013-12-21 08:06:19

标签: android youtube orientation fragment

我有灵活的UI布局。手持设备中的一个片段和平板电脑中的两个片段。在详细信息片段中,这将包含YouTube视频和其他一些视图。我正在使用Youtube API执行此操作。

我尝试使用xml文件中定义的YoutubePlayerSupportFragment,它在第一次加载时工作正常。但是当回到List视图然后重新打开详细信息视图时,我得到一个重复的ID错误。这是因为DetailsFragment的onCreateView再次加载布局。

我尝试用FrameLayout替换它,并动态添加解决上述问题的YoutubeFragment。但是,在更改方向时,它会重新加载整个片段,并从头开始重新启动YouTube视频。

我想要的是让片段内的youtube视频和处理屏幕更改(如方向或全屏模式)而不进行视频重新缓冲。 Android开发者页面中提供了一个示例应用程序来完成此操作,但是他们在XML文件中使用YoutubePlayerView,这要求容器是从YoutubeBaseActivity继承的活动,因为我使用的是片段,所以在我的情况下不起作用。实现这个的正确方法是什么?

DetailFragment.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView .. />

    <fragment
        android:id="@+id/youtube_fragment"
        android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <Button ... />

</LinearLayout>

DetailFragment.java

public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater
                .inflate(R.layout.DetailFragment, container, false);
        ...

        YouTubePlayerSupportFragment youTubeView = (YouTubePlayerSupportFragment) getActivity()
                .getSupportFragmentManager().findFragmentById(
                        R.id.youtube_fragment);
        youTubeView.initialize(Utilities.DEVELOPER_KEY, this);

        return view;
    }

0 个答案:

没有答案