2013-09-06 22 views
8

私は自分のFragmentでビデオを再生しようとしています。しかし、私はそれを働かせることはできません。私は 'YoutubeFailureRecovery' を拡張していた場合、私は得る:YouTubePlayerFragmentを使用してYouTube APIで動画を再生するにはどうすればよいですか?

9月6日21:56:40.472:E/AndroidRuntime(4946):java.lang.IllegalStateException:によって引き起こさYouTubePlayerViewだけで作成することができますそのコンテキストとしてYouTubeBaseActivityを拡張するアクティビティ。

これは私の.xmlです:

<com.google.android.youtube.player.YouTubePlayerView 
    android:id="@+id/player" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

そして、これはクラスです:

public class YoutubeFragment extends YoutubeFailureRecovery { 

    YouTubePlayer player; 
    YouTubePlayerView playerView; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle arg2) { 
     // TODO Auto-generated method stub 
     return inflater.inflate(R.layout.detailview, container, false); 
    } 

    @Override 
    public void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 
     playerView = (YouTubePlayerView)getActivity().findViewById(R.id.player); 
     playerView.initialize(DataHolder.DEVELOPER_KEY, this); 

    } 

    @Override 
    public void onInitializationSuccess(Provider provider, YouTubePlayer player, 
             boolean wasRestored) { 
     // TODO Auto-generated method stub 
     player.cueVideo("nCgQDjiotG0"); 
    } 

    @Override 
    protected Provider getYouTubePlayerProvider() { 
     // TODO Auto-generated method stub 
     return playerView; 
    } 
} 


public abstract class YoutubeFailureRecovery extends YouTubePlayerSupportFragment implements YouTubePlayer.OnInitializedListener{ 

私は何をするか分かりません。私は 'YoutubePlayerSupportFragment'で私のFragmentクラスを拡張しようとしましたが、ビデオのようなフラグメントをXMLに追加しようとしましたが、何も動いていません(エラーが膨らんでいます)。おそらく誰かが断片の中でYouTube APIを使った経験がありますか?

答えて

27

YouTubePlayerViewのみ YouTubeBaseActivityを拡張アクティビティと連携。

あなたはYoutubePlayerFragment/SupportFragmentを使用する必要がフラグメントを使用したい場合。

あなたは、例えばYoutubePlayerSupportFragmentから継承するカスタムフラグメントを作成することができます

コードで
public class VideoFragment extends YouTubePlayerSupportFragment { 

    public VideoFragment() { } 

    public static VideoFragment newInstance(String url) { 

     VideoFragment f = new VideoFragment(); 

     Bundle b = new Bundle(); 
     b.putString("url", url); 

     f.setArguments(b); 
     f.init(); 

     return f; 
    } 

    private void init() { 

     initialize("yourapikey", new OnInitializedListener() { 

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

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

それは次のようになります。

VideoFragment f = VideoFragment.newInstance("your-video-url"); 
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, f).commit(); 

この場合の「fragment_containerは」でなければなりません空のフレームレイアウト

+0

パーフェクト!男... –

+0

@Philipp、http://goo.gl/V55wsuと同様の問題が発生しています。あなたのアドバイスに感謝します。 – DJElbow

+0

画面を回転させると、ビデオが消えてしまいます。助言がありますか? –

関連する問題