studio seleccione proyecto problemas problema por favor error con abrir java android compiler-errors

java - seleccione - ¿Por qué me aparece "debe anular un método de superclase" con @Override?



error sdk android studio (6)

Compruebe las propiedades del proyecto y verifique que Java Compiler -> Compiler compliance level está establecido en 1.6 .

El siguiente código genera este mensaje de error en el public void onClick en la línea public void onClick .

Múltiples marcadores en esta línea
- implementa android.view.View.OnClickListener.onClick
- El método onClick (Ver) de tipo nuevo View.OnClickListener () {} debe anular un método de superclase

No puedo entender por qué. Este código está tomado de numerosos ejemplos que he visto. ¿Qué puede estar posiblemente mal?

private Button audioButton; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); audioButton = (Button) findViewById(R.id.imageButton1); audioButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View button) { if (button.isSelected()) { button.setSelected(false); } else { button.setSelected(true); } } }); }


Esto es muy probablemente debido a una incompatibilidad de nivel de código fuente entre Java 1.5 y 1.6.

  • En Java 5, la anotación @Override requiere que el método esté anulando un método en una superclase.

  • En Java 6 y posterior, la anotación @Override también se cumplirá si el método implementa un método abstracto en una superclase o interfaz.

Por lo tanto, la razón más probable para ver esto en el código que espera trabajar es que compila código Java 6 (o posterior) con un compilador Java 5 (o algún otro compilador con el nivel de cumplimiento de fuente del compilador establecido en 5).


Para mí, esto sucedió porque el Método que quería anular era el paquete privado y traté de anularlo desde un paquete diferente.

Eclipse además pondrá una advertencia en ese caso que no noté debido a una tonelada de otras advertencias


Poner una View.onCLickListener () me resolvió el problema. Mi compilador Java -> nivel de compilación del compilador ya está configurado en 1.6, pero aun así tuve el mismo problema.

Pero cambiando el código

rdBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub onRadioButtonClicked(v); } });

a

rdBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub onRadioButtonClicked(v); } });

Resolvió el problema en mi caso.


Si configura el compilador en 1.6 y todavía obtiene este error, intente verificar sus importaciones, porque lo que hace Eclipse es que siempre intenta hacer esto.

import android.content.DialogInterface.OnClickListener

en lugar de ->

import android.view.View.OnClickListener

Eso resuelve mi problema.


USUARIOS MAVEN Si está utilizando Maven para compilación, puede anular las configuraciones de eclipse durante la compilación. Por lo tanto, si configura Eclipse en 1.7 pero no establece específicamente la versión de compilación de Maven JDK (que en el momento de escribir esto está predeterminada en 1.5), restablecerá el compilador de destino de eclipse a 1.5. Establezca el compilador Maven de la siguiente manera.

<build> ... <plugins> .... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build>