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

时间:2011-04-25 07:12:04

标签: java android override

我发生的错误如下:

  

“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

7 个答案:

答案 0 :(得分:42)

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

作为旁注,最好在代码中关注Java Naming Conventions。因此,所有课程都以大写字母开头。

答案 1 :(得分:9)

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

  • 打开项目设置 - > Java编译器
  • 启用项目特定设置设置为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 覆盖您的方法,或者只是转到代码 - >覆盖并覆盖适当的方法。 它会自动覆盖您的方法。