OnClickListener()必须重写一个超类方法?

有了这个代码:

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(){}types的onClick(View)方法必须覆盖超类方法

似乎这个问题有时是由一个Project |引起的 属性| Java编译器被设置为1.5。

虽然我实际上我曾经遇到过这个问题,并将其改为1.6,但是不知何故,它又一次达到了1.5。

但是,(改为1.6)并没有解决问题。 我仍然得到同样的错误味精,清洗后,build设和F11ing …?

我build议您取消勾选“启用项目特定设置”,点击“configuration工作区设置…”,将“编译器符合级别”更改为1.6或更高。 否则,你将不得不每次指定它。

如果您需要特定项目的具体合规性级别,则需要validation每个需要合规性级别1.6或更高级别的其他项目。

一切正确设置后 – 清理项目,并重新启动Eclipse 。 Eclipse有时可能会这么糟糕 – 这常常为我解决了一些问题。

有两件事要考虑:

1)看看你的导入 – 你确定View.OnClickListener是导入的,但不允许说DialogInterface.OnClickListener

2) OnClickListener实际上是一个接口,你是匿名实例化。 因此,毕竟在编写onClick方法时,实际上并不是重写一个超类方法,而是实现一个接口方法。 使用@Override注解接口方法是一个好习惯,但是这已经在JDK 6中引入了,这意味着在开发Android 1.5或1.6时,可能还没有引入到Java语言中,因此使得它成为无效的语法。

在“编译器符合级别”下方,如果选中“使用默认符合性设置”checkbox,则会显示一些灰显的选项:即“生成的.class文件兼容性”和“源代码兼容性”。 validation这两个都设置为1.6 – 如果不是,请更改默认合规性设置,或取消选中该框并直接调整它们。

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

尝试replace这一行

 buttonAuthorizeUsers.setOnClickListener(new View.OnClickListener() {}); 

这个错误发生在你试图委托On-click to unexpectedtypes的时候! 所以,相信大部分时间Eclipse IDE会导入DialogInterface而不是View,所以请自己写。

daigoor是对的。 Eclipse总是试图做这个“ 导入android.content.DialogInterface.OnClickListener ”,而不是这样做 – “ 导入android.view.View.OnClickListener ”。 这解决了我的问题。