Pourquoi suis-je “doit remplacer une méthode de superclasse” avec @Override?
Le code suivant génère ce message d'erreur à la public void onClick
ligne.
Plusieurs repères à cette ligne
- met en œuvre android.vue.Vue.OnClickListener.onClick
- La méthode onClick(View) de type nouveau point de Vue.OnClickListener(){} doit remplacer une méthode de superclasse
Je ne comprends pas pourquoi. Ce code est pris à partir de nombreux exemples, que j'ai vu. Ce qui peut éventuellement être trompé?
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);
}
}
});
}
- stackoverflow.com/questions/1678122/...
- Si la modification du compilateur à 1,6 ne fonctionnent pas ensuite actualiser le projet et de le construire. Il a travaillé pour moi.
Vous devez vous connecter pour publier un commentaire.
Vérifier les propriétés du projet et vérifier que Compilateur Java -> Compilateur niveau de conformité est fixé à 1.6.
Ceci est probablement dû à un code source d'incompatibilité entre Java 1.5 et 1.6.
En Java 5, le
@Override
annotation exige que la méthode est en fait du remplacement d'une méthode dans une super-classe.En Java 6 et, plus tard, le
@Override
annotation aussi être satisfaite si la méthode est mise en œuvre une méthode abstraite dans une super-classe ou de l'interface.Donc la raison la plus probable pour voir ce dans le code que vous attendez de travail est que vous compilation Java 6 (ou version ultérieure) code avec un compilateur Java 5 (ou un autre compilateur avec le compilateur de la source niveau de conformité défini à 5).
Si le compilateur est en 1.6 et toujours ce message d'erreur, essayez de vérifier vos importations, parce qu'Eclipse n'est qu'il essaie toujours de faire ce
au lieu de ->
Qui résout mon problème.
MAVEN UTILISATEURS
Si vous utilisez Maven pour construire il peut remplacer le eclipse paramètres lors de la construction. Donc, si vous définissez l'Éclipse à 1,7, mais ne sont pas spécifiquement l'Maven JDK version(qui, au moment de cette écriture par défaut 1.5), alors il sera réinitialisé eclipse cible du compilateur retour à la 1.5. Définir le Maven compilateur comme suit.
Pour moi, c'est arrivé parce que la Méthode que j'ai voulu remplacer a été colis privé et j'ai essayé de le remplacer par un autre package.
Eclipse va en outre mettre un avertissement dans ce cas que je n'ai pas d'avis à cause d'une tonne d'autres mises en garde
Maintenant, c'est 2018! Pour faciliter les références, voir la capture d'écran ci-dessous.
Mettre un
View.onCLickListener()
résolu le problème pour moi. Mon Compilateur Java --> Compilateur niveau de Conformité est déjà fixée à la 1.6, mais encore j'ai eu le même problème.Mais en changeant le code
à
résolu le problème dans mon cas.