typesoddg的onClick(View)方法必须覆盖超类方法吗?

我发生的错误如下:

“typesoddg的onClick(View)方法必须覆盖超类方法”。

我很困惑究竟发生了错误。 你能指导我,究竟是什么错误?

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) { } } 

这是我的代码……在此先感谢 – Onkar

我认为问题在于您将编译器设置设置为Java 1.5而不是Java 1.6。 从Java 1.6开始,注释@Override不仅可以用于来自超类的inheritance方法,还可以用于来自接口的已实现方法。 但是如果你的编译器仍然设置为1.5,问题是他将检查你是否从超类中覆盖了一个方法。 在您的示例中,由于您是从接口实现方法,因此不是这种情况。

作为旁注,最好在代码中遵循Java命名约定 。 所以所有类都以大写字母开头。

我遇到了同样的麻烦,我修理了这样的:

  • 打开项目设置 – > Java编译器
  • 设置启用项目特定设置disable

这不是直接适用于这个问题,但是如果你没有在类声明中声明implements OnClickListener ,那么你也会遇到这个错误。

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

对于经验更丰富的编码员来说,这似乎有些愚蠢,但我是新手,它骗了我。

阅读@Override注释。 这意味着,一旦您使用@Override对方法进行了注释,编译器就会检查它是否真的是一个覆盖的方法,如果不是,则会显示错误。

此外,您必须具有语言级别6才能将其与接口实现方法一起使用。 在IDEA中,您可以通过项目设置来完成。

我有同样的问题。 我发现解决方案写得很好。

我换了

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

对于

 import android.view.View.OnClickListener; 

“RoflcoptrException”是对的! 你应该将java编译器设置为1.6项目属性 – > Java编译器 – > 1.6

如果你使用的是android studio,你也可以通过按ctrl + O覆盖你的方法,或者只是转到code-> Overide并覆盖适当的方法。 它会自动覆盖您的方法。