あなたは、他のフラグメントを使用して、実行時に既存のフラグメント内のyouTubeを再生しようとしています。私は他の断片の中の断片に従おうとします。しかし、以前のフラグメントビューで再生されているオーディオだけのビデオは表示されません。私を助けてください。私は約200ページを照会したが、何も私のために働いた。どんな助けもありがとう。 YoutubeFragmentためandroidの他のフラグメントの上でyoutubeビデオを再生する方法
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentOpponents"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:keepScreenOn="true">
<android.support.v7.widget.RecyclerView
android:id="@+id/opponents"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:numColumns="3" />
<FrameLayout
android:id="@+id/child_fragment"
android:layout_width="250dp"
android:layout_height="250dp">
</FrameLayout>
</RelativeLayout>
コード:
public class YoutubeFragment extends YouTubePlayerSupportFragment implements YouTubePlayer.OnInitializedListener {
private static final int RECOVERY_DIALOG_REQUEST = 1;
private static final String KEY_VIDEO_ID = "KEY_VIDEO_ID";
private String mVideoId;
//Empty constructor
public YoutubeFragment() {
}
/**
* Returns a new instance of this Fragment
*
* @param videoId The ID of the video to play
*/
public static YoutubeFragment newInstance(final String videoId) {
final YoutubeFragment youTubeFragment = new YoutubeFragment();
final Bundle bundle = new Bundle();
bundle.putString(KEY_VIDEO_ID, videoId);
youTubeFragment.setArguments(bundle);
return youTubeFragment;
}
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
final Bundle arguments = getArguments();
if (bundle != null && bundle.containsKey(KEY_VIDEO_ID)) {
mVideoId = bundle.getString(KEY_VIDEO_ID);
} else if (arguments != null && arguments.containsKey(KEY_VIDEO_ID)) {
mVideoId = arguments.getString(KEY_VIDEO_ID);
}
initialize(Consts.DEVELOPER_KEY, this);
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean restored) {
if (mVideoId != null) {
if (restored) {
youTubePlayer.play();
} else {
youTubePlayer.loadVideo(mVideoId);
}
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
if (youTubeInitializationResult.isUserRecoverableError()) {
youTubeInitializationResult.getErrorDialog(getActivity(), RECOVERY_DIALOG_REQUEST).show();
} else {
//Handle the failure
Toast.makeText(getActivity(), R.string.error_init_failure, Toast.LENGTH_LONG).show();
}
}
@Override
public void onSaveInstanceState(Bundle bundle) {
super.onSaveInstanceState(bundle);
bundle.putString(KEY_VIDEO_ID, mVideoId);
}
}
私は、実行時にフラグメントを呼び出すために
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment fragment = YoutubeFragment.newInstance("q8_o4W9ZyZk");
fragmentTransaction.add(R.id.child_fragment, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
をこのコードを使用しています。ここ
は私のmy_fragment.xmlコードがあります
こんにちは、どこでテストしていますか?エミュレータまたは実際のデバイスでは? Androidのどのバージョンをテストしていますか? – jos
実デバイス上。 android version 6.0.1(Marshmallo) – Archana