2011-04-25 8 views
15

me estoy dando un error como: "El método onClick (Ver) de tipo oddg debe anular un método de superclase" Estoy confundido donde exactamente se ha producido el error ... ¿me puede guiar por favor, qué es exactamente el error ?????El método onClick (Ver) de tipo oddg debe anular un método de superclase?

public class oddg extends Activity implements OnClickListener 
    { 
      ProgressDialog dialog; 
      int increment; 
      int maximum ; 
      private static final String TAG = "ServicesDemo"; 




      @Override 
      public void onCreate(Bundle savedInstanceState) 
      { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.main1); 
       Button startbtn = (Button) findViewById(R.id.startbtn); 
       startbtn.setOnClickListener(this); 

      } 


      @Override 
      public void onClick(View arg0) 
      { } 
    } 

este es mi código ... Gracias en Advance-- Onkar

+0

¿Usó la anotación @Override en un método que no tiene una firma que coincida con una interfaz principal o implementada?En cualquier caso, si publicara el código mínimo completo necesario para replicar su problema, la gente podría ayudarlo. –

+0

@thane he editado mi Q. para codificar, sí, he usado la anotación @Override, tuerca lo que quiero hacer por ella, por favor guíame ... – Smith

Respuesta

42

Creo que el problema es que eres configuración del compilador se establecen en Java 1.5 en lugar de Java 1.6. Desde Java 1.6, la anotación @Override no solo es posible para los métodos heredados de una superclase, sino también para los métodos implementados desde una interfaz. Pero si su compilador aún está configurado en 1.5, el problema es que comprobará si está sobrescribiendo un método de una súper clase. En su ejemplo, este no es el caso ya que está implementando un método desde una interfaz.

Como nota al margen, sería bueno seguir Java Naming Conventions en su código. Entonces, todas las clases comienzan con una letra mayúscula.

+0

creo que sí, pero ¿cómo cambiar la configuración del compilador ???? – Smith

+6

Si está usando Eclipse, vaya a Windows -> Preferencias -> Java -> Compilador y cambie el nivel de cumplimiento del compilador a 1.6 – RoflcoptrException

+0

, sí, está trabajando un montón ... :) – Smith

2

Lea sobre @Override anotación. Esto significa que una vez que haya anotado el método con @Override, el compilador verifica si realmente es un método anulado y muestra un error si no es así.

Además, debe tener el nivel de idioma 6 para poder utilizarlo con los métodos de implementación de la interfaz. En IDEA puede hacerlo a través de la configuración del proyecto.

9

que tenían el mismo problema y lo fijé como esto:

  • proyecto abierto del configuración-> Java Compiler
  • Conjunto Habilitar configuración de proyecto específicos a disable
3

Esto no es t directamente apropiado para esta pregunta pero también obtendrá este error si no ha declarado implements OnClickListener en la declaración de clase.

// Wrong 
public class aClass extends Activity { 
} 
// Right 
public class aClass extends Activity implements OnClickListener { 
} 

Esto puede parecer aburrido para el codificador más experimentado, pero soy nuevo en esto y me engañó.

0

"RoflcoptrException" es correcto! Debes configurar el compilador Java en 1.6 Propiedades del proyecto -> compilador Java -> 1.6

2

Tuve el mismo problema. Encontré la solución escribiendo bien la importación.

que sustituyen

import android.content.DialogInterface.OnClickListener; //(wrong) 

para

import android.view.View.OnClickListener; 
+0

Esta es la solución, una mala importación –

+0

Correcto, también resolví el problema con su solución. mi voto 1+ – imdadhusen

0

Si está utilizando Android Studio, también puede anular su método pulsando Ctrl + O o simplemente ir a código-> overide y anula el método apropiado. Anulará automáticamente su método.

Cuestiones relacionadas