android java setOnClickListener错误
按下btnExecute时,我正在尝试执行一个例程。我在每次onClick btnxxx.setOnClickListener时都会收到一个错误,声明“类型new View.OnClickListener(){}必须实现继承的抽象方法View.OnClickListener.onClick(View)。请帮助我了解错误android java setOnClickListener错误,java,android,Java,Android,按下btnExecute时,我正在尝试执行一个例程。我在每次onClick btnxxx.setOnClickListener时都会收到一个错误,声明“类型new View.OnClickListener(){}必须实现继承的抽象方法View.OnClickListener.onClick(View)。请帮助我了解错误 package com.androidbook.triviaquiz8; import android.os.Bundle; import android.os.Environ
package com.androidbook.triviaquiz8;
import android.os.Bundle;
import android.os.Environment;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
public class QuizHelpActivity extends QuizActivity {
private EditText m1_sqs1;
private EditText m1_rs1;
private EditText m1_rs2;
private EditText m1_cd;
private EditText m1_els1;
private EditText m1_els2;
private EditText m1_sa_in;
private EditText m1_sa_ft;
private EditText m1_sa_mm;
private EditText m1_sa_m;
private EditText m1_ed_in;
private EditText m1_ed_ft;
private EditText m1_ed_mm;
private EditText m1_ed_m;
private Spinner m1_sqs1_spinner;
private Spinner m1_rs1_unit;
private Spinner m1_rs2_unit;
private Spinner m1_cd_unit;
private Spinner m1_els1_unit;
private Spinner m1_els2_unit;
private QuizHelpActivity mContext;
private Button btnSave;
private Button btnClear;
private Button btnExecute;
//
// onCreate - let the fun begin!
//
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
setContentView(R.layout.help);
m1_sqs1 = (EditText) findViewById(R.id.m1_sqs1);
m1_rs1 = (EditText) findViewById(R.id.m1_rs1);
m1_rs2 = (EditText) findViewById(R.id.m1_rs2);
m1_cd = (EditText) findViewById(R.id.m1_cd);
m1_els1 = (EditText) findViewById(R.id.m1_els1);
m1_els2 = (EditText) findViewById(R.id.m1_els2);
m1_sa_in = (EditText) findViewById(R.id.m1_sa_in);
m1_sa_ft = (EditText) findViewById(R.id.m1_sa_ft);
m1_sa_mm = (EditText) findViewById(R.id.m1_sa_mm);
m1_sa_m = (EditText) findViewById(R.id.m1_sa_m);
m1_ed_in = (EditText) findViewById(R.id.m1_ed_in);
m1_ed_ft = (EditText) findViewById(R.id.m1_ed_ft);
m1_ed_mm = (EditText) findViewById(R.id.m1_ed_mm);
m1_ed_m = (EditText) findViewById(R.id.m1_ed_m);
// Create an OnClick Event in each button.
Button btnExecute = (Button) findViewById(R.id.btnExecute);
Button btnSave = (Button) findViewById(R.id.btnSave);
Button btnClear = (Button) findViewById(R.id.btnClear);
btnSave.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
}
});
btnClear.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
}
});
btnExecute.setOnClickListener(new OnClickListener() {
private AlertDialog show;
public void onClick(View arg0) {
if ((m1_sqs1.getText().length() == 0)
|| (m1_sqs1.getText().toString() == " ")) {
show = new AlertDialog.Builder(mContext).setTitle("Error")
.setMessage("The Square Side length is empty")
.setPositiveButton("OK", null).show();
} else if (operator.getText().equals("")) {
show = new AlertDialog.Builder(mContext).setTitle("Error")
.setMessage(" is null").setPositiveButton(
"OK", null).show();
}
{
double m1_sa_in = new Double(m1_sqs1.getText().toString())
* new Double(m1_sqs1.getText().toString());
m1_sa_in.setText(Double.toString(m1_sa_in));
}
}
}
你在哪里
btnSave.setOnClickListener(new OnClickListener() {
换成
btnSave.setOnClickListener(new View.OnClickListener() {
这只是一种更新的方式,所以如果你正在关注一篇旧的教程或博客文章,这就是为什么它会过时的原因
编辑:
import android.view.View.OnClickListener;
View view = findViewById(android.R.id.content);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// do something
}
});
试试这个
btnSave.setOnClickListener(new OnClickListener() {
public void View.OnclickListener.onClick(View arg0) {
}
});
您的导入列表不包括
android.view.view
,只包含android.view.view.OnClickListener
。如果不知道view
对象是onClick()
的一个参数,编译器无法确定实现是否完成。就我个人而言,我将通过以下方式修复它:
android.view.view.OnClickListener更改(不添加)为android.view.view
在这种情况下,在XML文件中设置OnClick可能是更好的方法 在XML布局文件中选择具有OnClick Listener的3个按钮。右键单击它>属性>OnClick,并为这3个按钮命名OnClick(例如OnClick按钮)。因此,在java代码中,可以执行以下操作:
public void onClickButtons(View v) {
switch (v.getId()) {
case R.id.R.id.btnExecute:
...
break;
case R.id.btnSave:
...
break;
case R.id.btnClear:
...
break;
}
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
}
并让您的类实现OnClickListener
对于您的AlerDialog,这是处理此问题的更好方法:
new AlertDialog.Builder(this)
.setTitle("Error")
.setMessage("is null")
.setCancelable(false)
.setPositiveButton(
"OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
})
.show();
欢迎您,祝您发展顺利!我相信您也可以做到这一点:
public class QuizHelpActivity extends QuizActivity implements OnClickListener {
添加实现OnClickListener将允许您使用此。例如,在onCreate中,您可以:
Button btnExecute = (Button) findViewById(R.id.btnExecute);
Button btnSave = (Button) findViewById(R.id.btnSave);
Button btnClear = (Button) findViewById(R.id.btnClear);
btnSave.setOnClickListener(this);
btnClear.setOnClickListener(this);
btnExecute.setOnClickListener(this);
然后可以在onCreate之后实现onClick函数,如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// the rest of your onCreate, including buttons
}
public void onClick(View v) {
switch(v.getId()) {
case R.id.btnExecute:
// reference a function that would house your current onClick behavior, such as:
execute();
break;
case R.id.btnSave:
break;
case R.id.btnClear:
break;
}
}
我认为这是一种更干净的方法,嵌套函数更少。首先导入以下包:
import android.view.View.OnClickListener;
然后像这样更改以下内容:
public void onClickButtons(View v) {
switch (v.getId()) {
case R.id.R.id.btnExecute:
...
break;
case R.id.btnSave:
...
break;
case R.id.btnClear:
...
break;
}
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
你可以把这个放进去
public class MainActivity2 extends Activity implements View.OnClickListener{
Button B2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
B2=(Button) findViewById(R.id.BM2);
B2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// Do anything
}
使用以下命令:
button1.setOnClickListener((OnClickListener)this);
不要使用以下方法:
button1.setOnClickListener(此);
Rasel,这似乎没有改变任何东西。我做了此更改,但仍然得到一个错误,即此行的多个标记-视图无法解析为类型-类型视图中的方法setOnClickListener(View.OnClickListener)不适用于参数(new OnClickListener(){})编辑我的答案-确保您的导入声明准确无误。