我发生的错误如下:
“oddg类型的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
答案 0 :(得分:42)
我认为问题在于您将编译器设置设置为Java 1.5而不是Java 1.6。从Java 1.6开始,注释@Override不仅可以用于来自超类的继承方法,还可以用于来自接口的已实现方法。但是如果你的编译器仍然设置为1.5,问题是他将检查你是否从超类中覆盖了一个方法。在您的示例中,由于您是从接口实现方法,因此不是这种情况。
作为旁注,最好在代码中关注Java Naming Conventions。因此,所有课程都以大写字母开头。
答案 1 :(得分:9)
我遇到了同样的麻烦,我修好了这个:
disable
答案 2 :(得分:3)
这不是直接适用于此问题,但如果您未在类声明中声明implements OnClickListener
,也会收到此错误。
// Wrong
public class aClass extends Activity {
}
// Right
public class aClass extends Activity implements OnClickListener {
}
对于经验丰富的编码员来说,这似乎有些愚蠢,但我是新来的,它欺骗了我。
答案 3 :(得分:2)
阅读@Override
注释。这意味着,一旦您使用@Override
注释了该方法,编译器就会检查它是否真的是一个覆盖的方法,如果不是则显示错误。
此外,您必须具有语言级别6才能将其与接口实现方法一起使用。在IDEA中,您可以通过项目设置来完成。
答案 4 :(得分:2)
我遇到了同样的问题。我发现解决方案写得很好。
我替换了
import android.content.DialogInterface.OnClickListener; //(wrong)
的
import android.view.View.OnClickListener;
答案 5 :(得分:0)
“Roflcoptr Exception”是对的!您应该将java编译器设置为1.6 项目属性 - > Java编译器 - > 1.6
答案 6 :(得分:0)
如果您使用的是android studio,您也可以通过按 ctrl + O 覆盖您的方法,或者只是转到代码 - >覆盖并覆盖适当的方法。 它会自动覆盖您的方法。