2016-10-12 18 views
0

あなたは、他のフラグメントを使用して、実行時に既存のフラグメント内の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コードがあります

+0

こんにちは、どこでテストしていますか?エミュレータまたは実際のデバイスでは? Androidのどのバージョンをテストしていますか? – jos

+0

実デバイス上。 android version 6.0.1(Marshmallo) – Archana

答えて

0

あなたはusiとしてngのネストされた断片は、代わりにgetSupportFragmentManager

Herehere

はそれが役に立てば幸い詳細情報があるgetChildFragmentManger()メソッドを使用します!

+0

うまくいかなかった。 :-( – Archana

+0

あなたがこれを実行しているクラスはあなたのフラグメントですか? – jos

+0

アクティビティ内で私はyoutubeフラグメントを呼び出しています – Archana

関連する問題