使用此代码:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
. . .
Button buttonAuthorizeUsers = (Button) findViewById(R.id.buttonAuthorizeUsers);
buttonAuthorizeUsers.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent configure = new Intent(OnDemandAndAutomatic_Activity.this, Configure_Activity.class);
OnDemandAndAutomatic_Activity.this.startActivity(configure);
}
});
我得到了:
新的View.OnClickListener(){}类型的onClick(View)方法必须覆盖超类方法
似乎这个问题有时是由Project |引起的属性| Java编译器设置为1.5。
虽然我以前几乎遇到过这个问题,并将其改为1.6,但不知怎的,它再次为1.5。
然而,(将其改为1.6)并没有解决问题。在清理,构建和F11之后,我仍然得到同样的错误消息...... ???
答案 0 :(得分:27)
我建议您取消选中“启用项目特定设置”,单击“配置工作区设置...”并将“编译器合规性级别”更改为1.6或更高版本。否则你每次都必须指定它。
如果您需要特定项目的特定合规级别,则需要验证需要合规级别1.6或以上的所有其他项目是否设置为此。
完成所有设置后 - 清理项目并重启Eclipse 。 Eclipse有时可能是个蠢事 - 这通常会为我解决问题。
答案 1 :(得分:3)
需要考虑两件事:
1)看看你的导入 - 你确定导入了 View.OnClickListener
,但不能说DialogInterface.OnClickListener
2)OnClickListener
实际上是一个匿名实例化的接口。因此,毕竟在编写onClick
方法时,实际上并没有覆盖超类方法,而是实现了接口方法。使用@Override
注释接口方法是一种很好的做法,但这已经在JDK 6中引入,这意味着在开发Android 1.5或1.6时,这可能还没有引入到java语言中,因此可以使用它语法无效。
答案 2 :(得分:2)
在“编译器合规性级别”之下,如果选中“使用默认合规性设置”复选框,则会有一些选项显示为灰色:即“生成的.class文件兼容性”和“源兼容性”。验证两者都设置为1.6 - 如果不是,请更改默认合规性设置,或取消选中该框并直接调整它们。
答案 3 :(得分:2)
Button buttonAuthorizeUsers = (Button) findViewById(R.id.buttonAuthorizeUsers);
buttonAuthorizeUsers.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent configure = new Intent(OnDemandAndAutomatic_Activity.this,Configure_Activity.class);
OnDemandAndAutomatic_Activity.this.startActivity(configure);
}
});
尝试替换此行
buttonAuthorizeUsers.setOnClickListener(new View.OnClickListener() {});
当你试图让受让人点击意外类型时,你发生了这个错误! 所以,相信Eclipse IDE大部分时间都会导入 DialogInterface 而不是 View ,所以请自己编写。
答案 4 :(得分:2)
daigoor是对的。 Eclipse总是尝试这样做' import android.content.DialogInterface.OnClickListener '而不是这样做 - > '导入android.view.View.OnClickListener '。这解决了我的问题。