Integrating youtube to fragment Integrating youtube to fragment android android

Integrating youtube to fragment


First extend your Activity as normal

 class YourActivity extends Activity...

in Layout file put the below lines

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

Then in your Activity you can create its instance using below line in your onCreareView method of your Fragment.

YouTubePlayerSupportFragment youTubePlayerFragment = (YouTubePlayerSupportFragment) getActivity().getSupportFragmentManager()                    .findFragmentById(R.id.youtube_fragment);

or you can declare a FrameLayout in your xml and then initiate the YouTubeSupportFragment using below lines

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <FrameLayout        android:id="@+id/youtube_fragment"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_centerHorizontal="true"        android:visibility="visible" /></RelativeLayout>

Code in your onCreateView

 YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance();    youTubePlayerFragment.initialize("DEVELOPER_KEY", new OnInitializedListener() {        @Override        public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {            if (!wasRestored) {                YPlayer = player;                YPlayer.setFullscreen(true);                YPlayer.loadVideo("2zNSgSzhBfM");                YPlayer.play();            }        }        @Override        public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) {            // TODO Auto-generated method stub        }    });    FragmentTransaction transaction = getChildFragmentManager().beginTransaction();    transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit();

The key thing here is to use YouTubePlayerSupportFragment instead of YouTubePlayerFragment.

Hope this helps.

Here is your Fragment

import android.app.Activity;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentTransaction;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.google.android.youtube.player.YouTubeInitializationResult;import com.google.android.youtube.player.YouTubePlayer;import com.google.android.youtube.player.YouTubePlayer.OnInitializedListener;import com.google.android.youtube.player.YouTubePlayer.Provider;import com.google.android.youtube.player.YouTubePlayerSupportFragment;import com.ismart.omanapp.R;public class YoutubeFragment extends Fragment {    private FragmentActivity myContext;    private YouTubePlayer YPlayer;    private static final String YoutubeDeveloperKey = "xyz";    private static final int RECOVERY_DIALOG_REQUEST = 1;    @Override    public void onAttach(Activity activity) {        if (activity instanceof FragmentActivity) {            myContext = (FragmentActivity) activity;        }        super.onAttach(activity);    }    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View rootView = inflater.inflate(R.layout.activity_you_tube_api, container, false);        YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance();        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();        transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit();        youTubePlayerFragment.initialize("DEVELOPER_KEY", new OnInitializedListener() {            @Override            public void onInitializationSuccess(Provider arg0, YouTubePlayer youTubePlayer, boolean b) {                if (!b) {                    YPlayer = youTubePlayer;                    YPlayer.setFullscreen(true);                    YPlayer.loadVideo("2zNSgSzhBfM");                    YPlayer.play();                }            }            @Override            public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) {                // TODO Auto-generated method stub            }        });    }}


To implement youtube player using fragment follow these 3 steps below:-

  1. In the activity XML file add these:

     <fragment         android:name="com.google.android.youtube.player.YouTubePlayerFragment"         android:id="@+id/youtube_fragment"         android:layout_width="match_parent"         android:layout_height="wrap_content"/>
  2. In activity java file create a new OnInitialize listener

    YouTubePlayer.OnInitializedListener onInitializedListener = new YouTubePlayer.OnInitializedListener() {     @Override     public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {         youTubePlayer.loadVideo("Your_video_id");     }     @Override     public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {     } };
  3. After initializing the listener get the fragment reference and initialize the player.

    YouTubePlayerFragment youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtube_fragment);youTubePlayerFragment.initialize("You_Developer_Api_Key", onInitializedListener);

To get the Developer API Key follow this link.