2016-10-12 3 views
0

Я пытаюсь воспроизвести видео youTube в существующем фрагменте во время исполнения с использованием другого фрагмента. Я пытаюсь следовать фрагменту внутри другого фрагмента. Но я не могу видеть видео, которое воспроизводит только аудио с предыдущим видом фрагмента. Пожалуйста, помогите мне. Я запросил около 200 страниц, но ничего не сработало для меня. Любая помощь будет оценена.Как воспроизвести видео на YouTube поверх другого фрагмента в android

Вот мой my_fragment.xml код:

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

Код для YoutubeFragment:

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(); 
+0

Привет, где вы тестируете? В эмуляторе или реальном устройстве? Какие версии Android вы тестируете? – jos

+0

На реальном устройстве. android version 6.0.1 (Marshmallo) – Archana

ответ

0

Поскольку вы являетесь пользователем usi нг вложенные фрагменты, использовать getChildFragmentManger() метод вместо getSupportFragmentManager

Here и here есть подробнее

Надеются, что это помогает!

+0

Не работает. :-( – Archana

+0

И в каком классе вы выполняете это? В вашем фрагменте – jos

+0

В рамках действия я вызываю фрагмент youtube. – Archana

 Смежные вопросы

  • Нет связанных вопросов^_^