活动的相关部分:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sub_item);
loadTopico();
}
private void loadTopico() {
YouTubePlayerFragment mainVideo = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.main_video);
mainVideo.initialize(Config.YOUTUBE_API, new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.cueVide(getResources().getString(R.string.principal_funcoes));
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
}
});
YouTubePlayerFragment secondVideo = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.secondVideo);
secondVideo .initialize(Config.YOUTUBE_API, new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
youTubePlayer.cueVideo(getResources().getString(R.string.secundario));
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
}
});
预期的结果是使两个片段分别具有视频,并且彼此独立。
我面临的问题是每个片段都没有视频,也不是独立的。两者一起加载,并且一个片段中的所有操作(按播放或暂停)完全改变了另一个片段中发生的事情。
此活动的计划功能是显示视频供稿,以供用户按一下播放并分别观看每个视频,但是如上所述,由于片段彼此完全毁坏,所以这是不可能的。
要解决该问题我该怎么办?
//编辑
R.layout.activity_sub_item:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="kerooker.me.matematicando.SubItem"
android:id="@+id/mainRelative">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.google.android.youtube.player.YouTubePlayerFragment"
android:layout_below="@+id/textoAssista"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:id="@+id/main_video" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/texto_assista"
android:id="@+id/textoAssista"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="25dp"
android:layout_marginLeft="10dp"
android:textSize="18sp" />
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.google.android.youtube.player.YouTubePlayerFragment"
android:layout_below="@+id/main_video"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:id="@+id/secondary_video" />
</RelativeLayout>
最佳答案
无论片段如何,当前两个视频都正在与此youTubePlayer
实例一起加载。您可以通过每个YouTubePlayer.OnInitializedListener
的onInitializationSuccess方法使用YouTubePlayer实例。
我正在更改您的loadTopico方法,您可以在其中加载一个YouTubeFragment。相应地更改第二个片段。
private void loadTopico() {
YouTubePlayerFragment mainVideo = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.main_video);
mainVideo.initialize(Config.YOUTUBE_API, new YouTubePlayer.OnInitializedListener() {
@Override
public abstract void onInitializationSuccess (YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored){
player.cueVideo(getResources().getString(R.string.principal_funcoes));
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
}
});
}
更新资料
好的,我已经做了一些挖掘工作,显然您无法初始化YouTubePlayerFragment的多个实例,因为它是在后台使用单例模式的,这基本上意味着,如果要实例化多个YouTubePlayerFragment对象,您最终将拥有同一实例两次。因此,您在所有实例中看到相同行为的原因。
解决方法是不要一次实例化多个YouTubePlayerFragment实例。而是仅在需要它们时才对其进行初始化。
请参阅this和this以获得更多有关此内容的信息。