0

relevanten Teil der Aktivität zu erzeugen:Falls mehr als eine YoutubePlayerFragment in der gleichen Aktivität

@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) { 

} 
}); 

das beabsichtigte Ergebnis war die beiden Fragmente jeweils ein Video haben müssen und auch voneinander unabhängig sein.

Das Problem, mit dem ich konfrontiert bin, ist, dass die Fragmente nicht jeweils ein Video haben, noch sind sie unabhängig. Beide laden zusammen, und alles, was in einem der Fragmente getan wird (Drücken von Play oder Pause), ändert vollständig, was im anderen Fragment passiert.

Die geplante Funktion für diese Aktivität ist das Anzeigen eines Feeds mit Videos, mit denen der Benutzer auf Play drücken und jedes Video einzeln ansehen kann. Wie bereits erwähnt, ist dies jedoch nicht möglich, da sich die Fragmente gegenseitig zerstören.

Was kann ich möglicherweise tun, damit das Problem gelöst wird?

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

Antwort

1

Ihre beiden Videos laden zur Zeit mit dieser youTubePlayer Instanz unabhängig von Fragmenten. Es gibt eine YouTubePlayer-Instanz, die Sie über die onInitializationSuccess-Methode jeder YouTubePlayer.OnInitializedListener-Instanz verwenden können.

Ich ändere Ihre loadTopico-Methode, bei der Sie ein YouTubeFragment laden. Ändern Sie das zweite Fragment entsprechend.

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) { 

      } 
     }); 
} 

aktualisieren

Okay, so habe ich einige graben getan und anscheinend Sie da sein, mehrere Instanzen von YouTubePlayerFragment nicht initialisieren kann ein Singletonmuster unter der Haube mit denen, wenn Sie im Grunde bedeutet‘ Wenn Sie mehrere YouTubePlayerFragment-Objekte instanziieren möchten, haben Sie am Ende dieselbe Instanz zweimal. Dies ist der Grund, warum Sie in allen Instanzen das gleiche Verhalten sehen.

Die Problemumgehung besteht nicht darin, mehrere Instanzen von YouTubePlayerFragment gleichzeitig zu instanziieren. Initialisieren Sie sie nur, wenn Sie sie benötigen.

Weitere Informationen hierzu finden Sie unter this und this.

+0

Aber beide Fragmente haben ihren eigenen OnInitializedListener, wie kann die Instanz des YoutubePlayers gleich sein? – Kerooker

+0

Entschuldigung, mein Code war ein wenig aus. Ich habe es editiert, also ist es genauso wie mein Java-Code. Das Problem ist immer noch hier. – Kerooker

+0

Das ist seltsam. Kannst du den Code von 'R.layout.activity_sub_item' auch posten? – fluffyBatman

Verwandte Themen