Error: "la clase debe implementar el método abstracto X", pero ya lo hace

Tengo esta superclase abstracta:

public abstract class MediaListActivity extends Activity { ... abstract void launchMedia(MediaFile mediaFile); } 

Y la subclase concreta:

 public class VideoListActivity extends MediaListActivity { ... void launchMedia(MediaFile mediaFile) { // TODO: implement launchMedia() } } 

En la primera línea de la subclase VideoListActivity, Android Studio da el error

La clase 'VideoListActivity' debe ser declarada abstracta o implementar el método abstracto 'launchMedia (MediaFile)' en 'MediaListActivity'

Puedo ver por qué debería. ¡Pero lo hace! ¿No es cierto? He comprobado que la firma coincide; He intentado Option + Return para que el IDE sugiera correcciones; nada funciona.

¿Es esto sólo un error en la parte de Android Studio? O estoy haciendo algo mal?

Ahora sucede que las clases están en paquetes diferentes: la subclase VideoListActivity está en un " foo.bar.baz.video ", foo.bar.baz.video , mientras que la superclase MediaListActivity está en el paquete foo.bar.baz .

Si muevo VideoListActivity en el paquete foo.bar.baz , el error desaparece. Pero tengo varias de estas subclases concretas, y no quiero estorbar el paquete de nivel superior con ellos: Me gustan organizados en sus subpaquetes. ¿Qué puedo hacer para que este error desaparezca (suponiendo que sea necesario)?

La respuesta es asegurarse de que la implementación del método launchMedia() es accesible fuera de su paquete: es decir, debe ser protected o public . Pensé que lo había intentado ya, pero podría haber estado mirando el método equivocado. De todos modos, eso hace que el error desaparezca.

  • ¿Cómo hacer referencia a los "activos" de Android a través de paquetes?
  • No se puede instalar Xamarin.Android.Support.v4
  • Parcel Lista de Lista de objeto Parcelable
  • ¿Puede alguien usar el mismo prefijo de nombre de paquete?
  • Nombres de paquetes para dominios que terminan en .do
  • ¿Pueden dos aplicaciones diferentes tener el mismo nombre de paquete?
  • Envía la transmisión de un apk / paquete a otro apk / package
  • ¿Cómo evito que Android Studio colapse automáticamente mis paquetes en la navegación de proyectos?
  • Cordova + Marco iónico - ¿Cómo cambiar el nombre del paquete con seguridad?
  • Pasar arraylist de objetos definidos por el usuario a Intent android
  • Convención de paquetes Java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.