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>