Android YouTube API:无法使用新的 YouTube 视频重新初始化 YouTubePlayerFragment



我试图加载一个不同的视频到一个YoutubePlayer片段当一个按钮被点击。我的按钮有一个onclick侦听器testClick。当我点击按钮时,我得到以下异常:"UsupportedExeception:没有视图可以添加到播放器的顶部"。当我从onclick方法初始化新视频时initialize方法也没有被调用。我怎样才能把一个新的YouTubeVideo加载到以前使用的YouTubePlayerFragment中,以及我如何才能从我的onClick方法中调用初始化方法?

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容器,这在运行时动态更改片段时是必要的:

<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> 

你将需要添加第一个YouTubeVideoFragmentonCreate()FragmentTransaction,当用户点击按钮,你已经在testClick()的代码应该工作。

相关内容

  • 没有找到相关文章