2013-09-06 3 views
8

내 조각에서 비디오를 재생하려고합니다. 그러나, 나는 그것을 작동시킬 수 없습니다. 내가 'YoutubeFailureRecovery'을 확장하고있어 경우에 나는 얻을 :YouTubePlayerFragment를 사용하여 YouTube API로 동영상을 재생하는 방법은 무엇인가요?

09-06 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과 같은 비디오 조각을 추가하려고 시도했지만 아무 것도 작동하지 않았습니다 (오류 팽창). 아마도 Fragment에서 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는"해야한다 빈 FrameLayout.

+0

완벽! 남자 ... –

+0

@ 필립, http://goo.gl/V55wsu와 비슷한 문제가 있습니다. 나는 당신이 가진 조언을 주셔서 감사합니다. – DJElbow

+0

화면을 회전하면 비디오가 사라집니다. 어떤 제안? –

관련 문제