Ric*_*Eng 64 java android compiler-errors
以下代码在该public void onClick
行生成此错误消息.
此行的多个标记
- 实现android.view.View.OnClickListener.onClick
- 类型new View.OnClickListener(){}的onClick(View)方法必须覆盖超类方法
我不明白为什么.这段代码来自我见过的众多例子.什么可能是错的?
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);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
Die*_*ano 143
检查项目的属性并验证Java Compiler - > Compiler compliance level是否设置为1.6.
Ste*_*n C 47
这很可能是由于Java 1.5和1.6之间的源代码级别不兼容.
在Java 5中,@Override
注释要求该方法实际上覆盖了超类中的方法.
在Java 6及更高版本中,如果方法在超类或接口中实现抽象方法,@Override
则也将满足注释.
因此,在您期望工作的代码中看到这一点的最可能的原因是您正在使用Java 5编译器(或编译器的源合规性级别设置为5的其他编译器)编译Java 6(或更高版本)代码.
小智 5
MAVEN 用户 如果您使用 Maven 进行构建,它可以在构建期间覆盖 eclipse 设置。因此,如果您将 Eclipse 设置为 1.7,但没有专门设置 Maven JDK 构建版本(在撰写本文时默认为 1.5),那么它会将 Eclipse 目标编译器重置回 1.5。设置Maven编译器如下。
<build>
...
<plugins>
....
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)