将youtube集成到片段

我的活动扩展了另一个活动,并包括导航抽屉在每个项目打开一个新的片段。我想整合Youtube的片段之一..以前我用YouTubePlayerView整合Youtube的活动,但在这里它是必需的fragment.Isearch净,并findYouTubePlayerFragment整合YouTube的片段。 但是,当我在教程search,我发现,即使通过使用YouTubePlayerFragment我们正在扩大YouTubeBaseActivity.These是例子.. http://android-coding.blogspot.in/2013/04/example-to-use-youtubeplayerfragment-of。 html http://android-er.blogspot.in/2013/06/example-to-use-youtubeplayerfragment-of.html

我不明白如何使用YouTubePlayerFragment,使我的课程扩展片段,而不是我的项目所需的YouTubeBaseActivity。如你可以看到下面我的课延伸另一个活动,并包括导航抽屉在第五个选项打开YouTube片段。我想在这个片段内播放Youtubevideo..我给我简要的布局如何我的类是 –

public class LandingActivity extends BaseGActivity { . . . . public void selectDrawerItem(int position) { Bundle args = new Bundle(); switch (position) { case 0: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_ALL); GApplication.getInstance().stopGPlayer(); break; case 1: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_PHOTO); GApplication.getInstance().stopGPlayer(); break; // case 2: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_AUDIO); GApplication.getInstance().stopGPlayer(); break; case 3: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_VIDEO); GApplication.getInstance().stopGPlayer(); break; case 4: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_MEME); GApplication.getInstance().stopGPlayer(); break; case 5: currentFragment = new YoutubeFragment(); default: currentFragment = new HomeFragment_(); args.putString(G.General.MEDIA_TYPE_KEY, G.General.MEDIA_TYPE_ALL); GApplication.getInstance().stopGPlayer(); break; } currentFragment.setArguments(args); FragmentManager frgManager = getFragmentManager(); frgManager.beginTransaction().replace(R.id.content_frame, currentFragment) .commit(); mDrawerList.setItemChecked(position, true); setTitle(dataList.get(position).getItemName()); mDrawerLayout.closeDrawers(); } public class YoutubeFragment extends Fragment implements YouTubePlayer.OnInitializedListener{ 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); YouTubePlayerView youTubeView = (YouTubePlayerView) rootView.findViewById(R.id.youtube_view); youTubeView.initialize(YoutubeDeveloperKey, (YouTubePlayer.OnInitializedListener) myContext); return rootView; } @Override public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult errorReason) { if (errorReason.isUserRecoverableError()) { errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show(); } else { String errorMessage = String.format( "There was an error initializing the YouTubePlayer", errorReason.toString()); Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show(); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == RECOVERY_DIALOG_REQUEST) { getYouTubePlayerProvider().initialize(YoutubeDeveloperKey, this); } } @Override public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) { if (!wasRestored) { YPlayer = player; YPlayer.setFullscreen(true); YPlayer.loadVideo("2zNSgSzhBfM"); YPlayer.play(); } } } 

YouTubeFragment.java

 public class YoutubeFragment extends Fragment implements YouTubePlayer.OnInitializedListener { 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(); youTubePlayerFragment.initialize("DEVELOPER_KEY", new YouTubePlayer.OnInitializedListener() { }); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit(); return rootView; } @Override public void onInitializationSuccess (YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer,boolean b){ if (!b) { YPlayer = youTubePlayer; YPlayer.setFullscreen(true); YPlayer.loadVideo("2zNSgSzhBfM"); YPlayer.play(); } } @Override public void onInitializationFailure (YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult){ } } 

布局

  <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment" android:id="@+id/youtube_fragment" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> 

错误-

 Error:(64, 101) error: <anonymous com.pc.gi.ui.fragment.YoutubeFragment$1> is not abstract and does not override abstract method onInitializationFailure(Provider,YouTubeInitializationResult) in OnInitializedListener 

Solutions Collecting From Web of "将youtube集成到片段"

首先像往常一样延长你的活动

  class YourActivity extends Activity... 

在布局文件中放置下面的行

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

然后在你的Activity中,你可以使用你的Fragment的onCreareView方法的下面一行来创build它的实例。

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

或者你可以在你的xml中声明一个FrameLayout,然后使用下面的YouTubeSupportFragment启动YouTubeSupportFragment

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

代码在你的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(); 

这里的关键是使用YouTubePlayerSupportFragment而不是YouTubePlayerFragment

希望这可以帮助。

这是你的片段

 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 } }); } }