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:
- ActivityNotFoundException cuando targetClass del paquete diferente en PreferenceScreen
- Identificador de paquete no válido al obtener la bolsa para el número de recurso 0xffffffff
- ¿Cuál es la mejor práctica para poner clases bajo nombres de paquetes en Android
- Intent es muy lento para lanzar una nueva Actividad 🙁
- Combinar paquetes de diferentes proyectos en un solo proyecto en eclipse
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)?
- ¿Guarda Android los archivos .apk? ¿si es así, donde?
- Cómo crear mi propia biblioteca android y alojarla
- Iniciar actividad desde otro paquete
- ¿Crear una biblioteca para el desarrollo de Android?
- ¿Cómo incluir el JAR Spongy Castle en Android?
- ¿Qué es SortedList <T> trabajando con RecyclerView.Adapter?
- ¿Cuál es la convención para nombres de paquetes java sin una asociación de dominio?
- La importación android.support no se puede resolver
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.