Android OnClickListener()必须重写超类方法吗?

Android OnClickListener()必须重写超类方法吗?,android,android-widget,android-button,Android,Android Widget,Android Button,使用此代码: 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(

使用此代码:

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); 
        }
      });
我得到:

类型为new View.OnClickListener(){}的方法onClick(View)必须重写超类方法

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

虽然我实际上是我以前有过这个问题,并把它改成了1.6,但不知怎么的,它又变成了1.5


然而,这(将其更改为1.6)并没有解决问题。在清理、构建和F11之后,我仍然会收到相同的错误消息…?

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

需要考虑两件事:

1) 查看您的导入-您确定导入了
View.OnClickListener
,但不包括
DialogInterface.OnClickListener

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

   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,所以请自己编写

我建议您取消选中“启用项目特定设置”,单击“配置工作区设置…”,并将“编译器符合性级别”更改为1.6或更高版本。否则,每次都必须指定它

如果您需要特定项目的特定合规性级别,则需要验证需要合规性级别1.6或以上的所有其他项目是否设置为该级别


在一切都正确设置之后-清理项目并重新启动Eclipse。Eclipse有时会很糟糕——这常常能解决我的问题。

daigoor是对的。Eclipse总是尝试执行此操作“导入android.content.DialogInterface.OnClickListener”,而不是执行此操作“导入android.view.view.OnClickListener”。这解决了我的问题。

这似乎不是问题。我在上面添加了我的导入。好的,你能解决这个问题吗!与之类似,让活动实现
视图.OnClickListener
接口并重写方法onclick,然后设置onclick this->
.setOnClickListener(this)这一切似乎都很好,但两个“不允许标识符”条目读为“错误”,这样可以吗?还有,我如何将它从1.6提升到1.7?这是一个可能的解决方案吗?我不知道当你跳到1.7时会发生什么-在写这篇文章时,我会用“不要穿越河流”来写它。至于“不允许标识符”——这通常意味着您在某个地方有一个保留关键字的变量名,如“assert”或“enum”。您必须检查行号。重新启动Eclipse->非常重要的一步+1因为这解决了我的问题,即使在我应用了上述所有步骤并重新启动Eclipse之后,错误仍然存在。我必须将“new OnClickListener…”替换为“new View.OnClickListener…”以获得干净的编译。然后,我又回到了“新OnClickListener…”,一切都很好。显然是eclipse(朱诺)问题!我尝试了一切,但最终还是成功了。