Android Youtube Player API崩溃

时间:2013-08-14 14:33:28

标签: java android api youtube

我创建了一个使用youtube API的Android应用程序但是我遇到了问题。 当我用youtube视频加载片段时。加载另一个片段然后返回到应用程序崩溃的youtube视频片段。

播放视频的片段:

public static Fragment newInstance(Context context) {
    WorkshopFragment f = new WorkshopFragment();
    return f;
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

    ViewGroup root = (ViewGroup) inflater.inflate(R.layout.workshop_fragment, null);

    YouTubePlayerFragment youTubePlayerFragment = (YouTubePlayerFragment) getActivity().getFragmentManager().findFragmentById(R.id.youtube_fragment);
    youTubePlayerFragment.initialize(API_KEY, this);

    return root; 
}

@Override
public void onInitializationFailure(Provider arg0,
        YouTubeInitializationResult arg1) {

}

@Override
public void onInitializationSuccess(Provider provider, YouTubePlayer player,
        boolean wasRestored) {
      if (!wasRestored) {
            player.cueVideo(VIDEO_ID);
          }
}

}

布局:

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

修复了重复ID错误

XML:

<FrameLayout
    android:id="@+id/fragment_youtube"
    android:layout_below="@+id/rule"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="30dp" />
然后我通过代码创建了youtube片段:

Fragment fragment = new YouTubePlayerFragment();
FragmentManager fm = getActivity().getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_youtube, fragment);
ft.commit(); 

YouTubePlayerFragment youtubeFrag = (YouTubePlayerFragment) fragment;
youtubeFrag.initialize(API_KEY, this);

1 个答案:

答案 0 :(得分:0)

由于片段是XML格式的,因此每次扩充XML时都会生成一个新片段。我认为片段的id在XML中没有变化,并且它试图创建具有相同id的新片段,因为已经运行了一个。两个正在运行的片段无法使用相同的ID,因此我认为该应用程序崩溃了。

尝试在开始新片段之前杀死旧片段或以编程方式而不是通过xml创建片段。