我想在点击按钮时导航到新页面。以下是我创建的两项活动。我正在使用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
会删除错误,但是应用程序无法正常工作。
答案 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
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 ,它将在项目中添加相关和缺少的命名空间。