OnClickListener和CheckBox错误

时间:2014-10-28 19:35:25

标签: java android eclipse

我对应用程序开发相对较新,对此处的操作非常困惑。请在回复中非常清楚,非常详细,非常感谢!

我从以下代码块中收到了大量错误:

//Blank out the appropriate blanks
    chkRect.setOnClickListener(new onClickListener() {
    @Override
    public void onClick(View v) {
        if (chkRect.isChecked()){
            chkCyl.setEnabled(false);
            txtDiameter.setText("0");
            txtDiameter.setEnabled(false);
        }
        else {
            chkRect.setEnabled(true);
            txtDiameter.setText("");
            txtDiameter.setEnabled(true);
        }
    }});

    chkCyl.setOnClickListener(new onClickListener(){
    @Override
    public void onClick(View v) {
        if (chkCyl.isChecked()){
            chkRect.setEnabled(false);
            txtHeight.setText("0");
            txtWidth.setText("0");
            txtHeight.setEnabled(false);
            txtWidth.setEnabled(false);
        }
        else {
            chkRect.setEnabled(true);
            txtHeight.setText("");
            txtWidth.setText("");
            txtHeight.setEnabled(true);
            txtWidth.setEnabled(true);
        }
    }});

在“onClickListener”行和“public void”行上,显示如下: -onClickListener无法解析为类型。 (多行) 类型View中的方法setOnClickListener(View.onClickListener)不适用于new onClickListener参数。 - 方法“onClick(View v)”必须覆盖或实现超类型方法。

以下是我的导入和变量声明:

import java.text.DecimalFormat;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;



public class MaterialCalculator extends ActionBarActivity implements View.OnClickListener{

public Spinner materialDD;
public CheckBox chkRect;
public CheckBox chkCyl;
//public Spinner shapeDD;
DecimalFormat d = new DecimalFormat("#");


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_material_calculator);

    materialDD = (Spinner) findViewById(R.id.materialDD);
    final CheckBox chkRect = (CheckBox) findViewById(R.id.chkRect);
    final CheckBox chkCyl = (CheckBox) findViewById(R.id.chkCyl);
    //shapeDD = (Spinner) findViewById(R.id.shapeDD);
    Button btnCalculate = (Button) findViewById(R.id.btnCalculate);
    Button btnClearAll = (Button) findViewById(R.id.btnClearAll);
    final EditText txtDiameter = (EditText) findViewById(R.id.txtDiameter);
    final EditText txtLength = (EditText) findViewById(R.id.txtLength);
    final EditText txtWidth = (EditText) findViewById(R.id.txtWidth);
    final EditText txtHeight = (EditText) findViewById(R.id.txtHeight);
    final EditText edtTxtTotprice = (EditText) findViewById(R.id.edtTxtTotprice);
    final EditText edtTxtWeight = (EditText) findViewById(R.id.edtTxtWeight);

我在这个问题上尝试了其他解决方案,包括删除视图和onClickListener的导入并使用ctrl + shift + O import,但它不起作用。就像我说的那样,请非常具体地说明你的答案,因为这是我的第一个应用程序,而且我在很大程度上都不熟悉Eclipse。

2 个答案:

答案 0 :(得分:0)

更改

chkCyl.setOnClickListener(new onClickListener(){

chkCyl.setOnClickListener(new OnClickListener(){

chkRect.setOnClickListener(new onClickListener(){

chkRect.setOnClickListener(new OnClickListener(){

setOnClickListener将实现OnClickListener接口的类的实例作为参数

答案 1 :(得分:0)

也许它无法从保存的实例状态中获取变量?尝试在onClick Listener之前定义变量,如下所示:



final CheckBox chkRect = (CheckBox) findViewById(R.id.chkRect);

chkRect.setOnClickListener(new onClickListener() {
    @Override
    public void onClick(View v) {
        if (chkRect.isChecked()){
            chkCyl.setEnabled(false);
            txtDiameter.setText("0");
            txtDiameter.setEnabled(false);
        }
        else {
            chkRect.setEnabled(true);
            txtDiameter.setText("");
            txtDiameter.setEnabled(true);
        }
    }});

    final CheckBox chkCyl = (CheckBox) findViewById(R.id.chkCyl);
    chkCyl.setOnClickListener(new onClickListener(){
        @Override`enter code here`
        public void onClick(View v) {
            if (chkCyl.isChecked()){
                chkRect.setEnabled(false);
                txtHeight.setText("0");
                txtWidth.setText("0");
                txtHeight.setEnabled(false);
                txtWidth.setEnabled(false);
            }
            else {
                chkRect.setEnabled(true);
                txtHeight.setText("");
                txtWidth.setText("");
                txtHeight.setEnabled(true);
                txtWidth.setEnabled(true);
            }
        }});