我正在尝试在单击按钮时将不同的视频加载到YouTubePlayer片段中。我的按钮有一个testclick的onclick监听器。当我点击按钮时,我得到了以下异常:“usupportedexeception:不能在player上面添加任何视图”。从onclick方法初始化新视频时,也不会调用initialize方法。如何将新的youtubevideo加载到以前使用的youtubeplayerframent中,以及如何从onclick方法调用initialize方法?

public class ExersizeListActivity extends Activity implements
    YouTubePlayer.OnInitializedListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_exersize_list);
}

public void testClick(View v) {
    //new YouTube Fragment to replace old one
    YouTubePlayerFragment youTubePlayerFragment=YouTubePlayerFragment.newInstance();
    youTubePlayerFragment.initialize(YoutubeAPIKey.API_KEY, this);

    FragmentManager fragManager=getFragmentManager();
    FragmentTransaction fragmentTransaction=fragManager.beginTransaction();


    fragmentTransaction.replace(R.id.youtube_fragment, youTubePlayerFragment);
    fragmentTransaction.commit();
}

@Override
public void onInitializationFailure(Provider arg0,
        YouTubeInitializationResult arg1) {
    Log.e(null, "it bombed");

}

//not being called, and in current state would reinitialize with the same video
@Override
public void onInitializationSuccess(Provider arg0,
        YouTubePlayer youtubePlayer, boolean arg2) {
    youtubePlayer.cueVideo("YNKehLXpLRI");
}

}

<RelativeLayout

    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

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

    <Button
    android:id="@+id/randomizeButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Randomize!"
    android:layout_below="@+id/youtube_fragment"
    android:onClick="testClick"/>
</RelativeLayout>

最佳答案

不要用<fragment>标记在xml布局文件中定义片段,而是定义一个framelayout容器,在runtime处对片段进行动态更改时需要这样做:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <FrameLayout
        android:id="@+id/youtube_fragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/randomizeButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Randomize!"
        android:layout_below="@+id/youtube_fragment"
        android:onClick="testClick"/>
</RelativeLayout>

您需要用YouTubeVideoFragment添加onCreate()中的第一个FragmentTransaction,当用户单击按钮时,testClick()中已有的代码应该可以工作。

关于android - Android YouTube API:无法使用新的YouTube视频重新初始化YouTubePlayerFragment,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24502634/

10-12 01:35