@override错误:新的View.OnClickListener(){}类型的onClick(View)方法必须覆盖超类方法

时间:2014-01-09 04:28:52

标签: java android onclicklistener

我想在点击按钮时导航到新页面。以下是我创建的两项活动。我正在使用eclipse,并且在主要活动中收到错误The method onClick(View) of type new View.OnClickListener(){} must override a superclass method

这是我的主要活动。

package com.example.grammer;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    Button grammerButton = (Button)findViewById(R.id.grammar);

   grammerButton.setOnClickListener(new View.OnClickListener() {

       @Override
      public void onClick(View view) {
        Intent intent = new Intent(MainActivity.this, Grammer.class);
        startActivity(intent);
      }

    });
} 
}

这是我的第二项活动。

package com.example.grammer;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.support.v4.app.NavUtils;
import android.annotation.TargetApi;
import android.os.Build;

public class Grammer extends Activity {

    @Override
            public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grammer);

         Button grammerButton = (Button) findViewById(R.id.grammar);


         grammerButton.setOnClickListener(new View.OnClickListener() {

          //    @Override
              public void onClick(View view) {
                finish();
              }

            });
          }
    }

删除@override会删除错误,但是应用程序无法正常工作。

6 个答案:

答案 0 :(得分:2)

检查

OnClickListener() must override a superclass method?

取消选中"启用项目特定设置",单击"配置工作区设置..."并更改"编译器合规性级别"至1.6或以上

拥有此导入声明

 import android.view.View.OnClickListener;

无需删除@Override Annotation。

也无需调用finish()。硬件后退按钮完成工作。

当您在语法活动中按下后退按钮时,您的当前活动将从后堆栈中弹出,并且后堆栈中的上一个活动将获得焦点。因此,无需在按钮点击时调用finish()

http://developer.android.com/guide/components/tasks-and-back-stack.html

此外,如果grammar中有一个ID为activity_grammer.xml的按钮,则表示没问题。

确保grammar

中有一个ID为activity_grammer.xml的按钮

您可以阅读主题ID

http://developer.android.com/guide/topics/ui/declaring-layout.html

ID在整个树中不一定是唯一的,但它在您正在搜索的树的部分内应该是唯一的。

答案 1 :(得分:1)

将“编译器合规性级别”更改为1.6。来自项目属性的java。

答案 2 :(得分:1)

放置此代码::

只需用

替换布局名称和按钮ID即可
   import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.alayout);


    Button grammerButton = (Button)findViewById(R.id.aId);

   grammerButton.setOnClickListener(new OnClickListener() {

       @Override
      public void onClick(View view) {
        Intent intent = new Intent(MainActivity.this, Grammer.class);
        startActivity(intent);
      }

    });

} 
}

只需用

替换布局名称和按钮ID即可
    import android.os.Bundle;
import android.app.Activity;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class Grammer extends Activity {

    @Override
            public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.blayout);

         Button grammerButton = (Button) findViewById(R.id.aId);


         grammerButton.setOnClickListener(new OnClickListener() {

             @Override
              public void onClick(View view) {
                finish();
              }

            });
          }

    }

答案 3 :(得分:0)

您只需要为OnClickListener导入库。只需在你的eclipse中按 ctrl + Shift + O ,它就会为你导入import android.view.View.OnClickListener文件。

答案 4 :(得分:0)

试试这个..

首先,您没有导入OnClickListener

import android.view.View.OnClickListener;

和第二个

Button grammerButton = (Button) findViewById(R.id.grammar);

您为不同布局中的按钮 ID提供了相同的名称。确保您的activity_grammer.xml中存在ID 语法按钮不是。

答案 5 :(得分:0)

您可能需要在代码中导入ViewClickListener命名空间。

只需按 ctrl + shift + O ,它将在项目中添加相关和缺少的命名空间。