0

Соответствующая часть деятельности:Неспособность создать более одного YoutubePlayerFragment в одной и той же деятельности

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sub_item); 


    loadTopico(); 
} 

private void loadTopico() { 
    YouTubePlayerFragment mainVideo = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.main_video); 

     mainVideo.initialize(Config.YOUTUBE_API, new YouTubePlayer.OnInitializedListener() { 


    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {    
     youTubePlayer.cueVide(getResources().getString(R.string.principal_funcoes)); 

} 
    @Override 
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { 

} 
}); 



    YouTubePlayerFragment secondVideo = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.secondVideo); 

    secondVideo .initialize(Config.YOUTUBE_API, new YouTubePlayer.OnInitializedListener() { 
    @Override 
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) { 
    youTubePlayer.cueVideo(getResources().getString(R.string.secundario)); 
} 
    @Override 
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { 

} 
}); 

Намеченный результат должен был иметь два фрагмента есть видео каждый, а также быть независимыми друг от друга.

Проблема, с которой я сталкиваюсь, заключается в том, что у фрагментов нет видеоролика каждый, и они не являются независимыми. Оба загружаются вместе, и все, что сделано в одном из фрагментов (нажатие на воспроизведение или пауза), полностью изменяет то, что происходит в другом фрагменте.

Планируемая функция для этого мероприятия показывает канал видео для того, чтобы пользователь мог нажимать воспроизведение и смотреть каждое видео отдельно, но, как указано, это невозможно из-за того, что фрагменты полностью разрушают друг друга.

Что я могу сделать для решения проблемы?

// EDIT R.layout.activity_sub_item:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="kerooker.me.matematicando.SubItem" 
android:id="@+id/mainRelative"> 


    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <fragment 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:name="com.google.android.youtube.player.YouTubePlayerFragment" 
      android:layout_below="@+id/textoAssista" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="30dp" 
      android:id="@+id/main_video" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:text="@string/texto_assista" 
      android:id="@+id/textoAssista" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="25dp" 
      android:layout_marginLeft="10dp" 
      android:textSize="18sp" /> 

     <fragment 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:name="com.google.android.youtube.player.YouTubePlayerFragment" 
      android:layout_below="@+id/main_video" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="30dp" 
      android:id="@+id/secondary_video" /> 
    </RelativeLayout> 

ответ

1

Оба видео в настоящее время загрузки с этой youTubePlayer экземпляра независимо от фрагментов. Существует экземпляр YouTubePlayer, который можно использовать с помощью метода onInitializationSuccess для каждого YouTubePlayer.OnInitializedListener.

Я изменяю ваш метод loadTopico, когда вы загружаете один фрагмент YouTube. Соответственно измените второй фрагмент.

private void loadTopico() { 
     YouTubePlayerFragment mainVideo = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.main_video); 

     mainVideo.initialize(Config.YOUTUBE_API, new YouTubePlayer.OnInitializedListener() { 

      @Override 
      public abstract void onInitializationSuccess (YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored){ 
        player.cueVideo(getResources().getString(R.string.principal_funcoes)); 
      }          

      @Override 
      public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) { 

      } 
     }); 
} 

Update

Хорошо, так, я сделал некоторое рытье и, очевидно, вы не можете инициализировать несколько экземпляров YouTubePlayerFragment, поскольку его использование одноэлементный шаблон под капотом, который в основном означает, что если вы» re для создания нескольких объектов YouTubePlayerFragment, вы просто получите один и тот же экземпляр дважды. Таким образом, вы видите одно и то же поведение во всех экземплярах.

Обходной путь заключается не в создании нескольких экземпляров YouTubePlayerFragment одновременно. Скорее, инициализируйте их только тогда, когда они вам понадобятся.

См. this и this, чтобы узнать больше об этом.

+0

Но у обоих фрагментов есть свой OnInitializedListener, как может быть экземпляр youtubeplayer одинаковым? – Kerooker

+0

Извините, мой код был немного выключен. Я отредактировал его, так что он точно такой же, как мой код Java. Проблема все еще здесь. – Kerooker

+0

Это странно. Можете ли вы опубликовать код 'R.layout.activity_sub_item' тоже? – fluffyBatman

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