我使用YouTubePlayerSupportFragment在我的应用程序中嵌入一个YouTube视频。当嵌入它的工作非常好,视频播放,一切都很棒。
当我点击全屏按钮时,我嵌入的YouTube视频片段,第一件奇怪的事情发生了:它实例化了一个现有的封闭活动的新副本…我不知道为什么。
我有一个活动,RootActivity,它在ViewPager中显示几个片段。我目前正在处理的片段称为EasyModePurchaseFragment。该EMPF在其布局xml中嵌入了YouTubePlayerSupportFragment:
<fragment
android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
android:id="@+id/youtube_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
/>
当我点击YouTubePlayerSupportFragment上的全屏按钮时,一个全新的RootActivity被实例化。为什么呢?
它给我带来了一些问题,因为它没有以正确的方式完全创建,这意味着它会导致崩溃。这是不好的。
编辑:我也尝试拦截onFullScreen()事件,而不是调整视图的大小,我只是试图启动一个独立的YouTube播放器与他们提供的意图:
Intent intent = YouTubeStandalonePlayer.createVideoIntent(getActivity(), myDeveloperKey, videoId);
getActivity().startActivity(intent);
奇怪的是,这会破坏并重新创建我的RootActivity。我的活动没有被销毁和重新创建,如果我启动一个意图打开一个web URL,为什么它被销毁和重新创建,当我启动YouTubeStandalonePlayer意图?
添加包含YouTubePlayerSupportFragment此属性的活动
android:configChanges="screenSize|orientation|keyboardHidden"
也许这会有所帮助,我很努力地找到一个解决方案,你的具体问题没有任何运气。如果你不发布更多的代码,很难看到YouTube播放器在你的应用程序中是如何设置的。
https://github.com/youtube/yt-android-player/blob/master/src/com/examples/youtubeapidemo/FullscreenDemoActivity.java