为什么我得到“必须覆盖超类方法”与@Override?

2022-08-31 13:23:11

下面的代码在该行生成此错误消息。public void onClick

此行
中的多个标记 - 实现 android.view.View.OnClickListener.onClick
- new View 类型的方法 onClick(View)。OnClickListener(){} 必须覆盖超类方法

我不明白为什么。这段代码取自我见过的众多例子。可能出了什么问题?

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

答案 1

检查项目的属性,并验证 Java 编译器 -> 编译器合规性级别是否设置为 1.6(或更高版本)。

它对我有用...我正在使用日食2021....和。。


答案 2

这很可能是由于 Java 1.5 和 1.6 之间的源代码级别不兼容。

  • 在 Java 5 中,注释要求该方法实际上重写超类中的方法。@Override

  • 在 Java 6 及更高版本中,如果方法在超类或接口中实现抽象方法,则注释也会得到满足。@Override

因此,在您希望工作的代码中看到这一点的最可能原因是,您正在使用Java 5编译器(或编译器的源代码合规性级别设置为5的其他编译器)编译Java 6(或更高版本)代码。


推荐