Heredando ActionBarSherlock y Android YouTubePlayer

He desarrollado una aplicación para reproducir videos de youtube con ActionBarSherlock.

Ahora que la api de YouTubePlayer para android está disponible ( aquí ), quiero integrarla en mi aplicación para mejorar la reproducción y los controles.

Me he topado con un problema, en el que necesito usar herencia múltiple para mi actividad para extender tanto SherlockActivity como YouTubeBaseActivity .

He comprobado este artículo para intentar entender la herencia múltiple en Java, pero francamente está sobre mi cabeza.

Si intento hacer algo como esto recibo el problema que no puedo instanciar SherlockActivity .

¿Alguien tiene algún ejemplo concreto de cómo extender ambas clases? ¿Alguien tuvo que extender tanto SherlockActivity como alguna otra clase, y cómo lograste?

Tuve los mismos problemas – quería añadir reproductor de YouTube a mi aplicación, pero albo no quería eliminar Sherlock de ella (basado en la biblioteca de soporte). Y lo que es malo, yo no era capaz de utilizar cualquiera de los playbers, porque tengo errores (inflando fragmento, YouTubePlayerView no puede comenzar sin actividad especial y así sucesivamente).

Lo que funcionó: Utilicé SherlockFragmentActivity, FragmentManager (getSupportFragmentManager ()) y YouTubePlayerSupportFragment. En lugar de agregarlo a XML, he creado todo desde el código. Mi diseño se ve así:

 <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" tools:context=".MainActivity" > <LinearLayout android:id="@+id/fragmentz" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > </LinearLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello_world" /> 

Y código Java:

 package com.example.youtubetesting; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.google.android.youtube.player.YouTubeInitializationResult; import com.google.android.youtube.player.YouTubePlayer; import com.google.android.youtube.player.YouTubePlayer.OnInitializedListener; import com.google.android.youtube.player.YouTubePlayerSupportFragment; import com.google.android.youtube.player.YouTubePlayer.Provider; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; public class MainActivity extends SherlockFragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager .beginTransaction(); YouTubePlayerSupportFragment fragment = new YouTubePlayerSupportFragment(); fragmentTransaction.add(R.id.fragmentz, fragment); fragmentTransaction.commit(); fragment.initialize("Your API KEY HERE", new OnInitializedListener() { @Override public void onInitializationSuccess(Provider arg0, YouTubePlayer arg1, boolean arg2) { if (!arg2) { arg1.loadVideo("wKJ9KzGQq0w"); } } @Override public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) { } }); } } 

No sé por qué Android estaba devolviendo errores cuando estaba inflando las vistas de manera normal, pero esto funciona perfectamente.

No puedes usar YouTubeBaseActivity y SherlockActivity al mismo tiempo, al menos no de una manera práctica.

En su lugar, es mucho más fácil si sólo utiliza una SherlockFragmentActivity para alojar un YouTubePlayerFragment

YouTubePlayerFragment contiene YouTubePlayerView al igual que YouTubeBaseActivity que te permitiría reproducir vídeos de YouTube.

Si necesitas un tutorial sobre Fragmentos en Android puedes empezar aquí

Copié el código fuente de la clase com.actionbarsherlock.app.SherlockActivity y lo puse en mi proyecto como my.package.SherlockYoutubeActivity , y sustituí " extends Activity " por " extends YouTubeBaseActivity ". En mi actividad entonces heredé de esta clase como esto:

 public class MyVideoActivity extends SherlockYoutubeActivity implements OnInitializedListener 
  • Android Java Youtube API v3.0 obtener enlace de vídeo RTSP
  • ¿Cómo puedo reproducir vídeos de YouTube en una aplicación de Android si un usuario no tiene instalada la aplicación de YouTube?
  • ¿Cómo subir videos a youtube en android?
  • Cómo cargar YouTubePlayer utilizando YouTubePlayerFragment dentro de otro Fragmento ?? (Androide)
  • ¿Cómo puedo ocultar controles, botones de pantalla completa en Youtube Player android API?
  • Uso de la API de YouTube dentro de un fragmento
  • Java.lang.IllegalStateException: YouTubeServiceEntity no se ha inicializado al usar YouTubePlayerApi
  • Api de YouTube: No está conectado. Llame a connect () y espere a que onConnected () se llame
  • Android YouTubePlayer con superposición no autorizada encima del reproductor
  • API de datos de Youtube con OAuth2.0 en Android
  • La solicitud de Youtube se bloquea
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.