Java 我能';t检查我的单选按钮以查看android计算结果(使用onclicklistener)

Java 我能';t检查我的单选按钮以查看android计算结果(使用onclicklistener),java,android,radio-button,Java,Android,Radio Button,我正在创建一个简单的计算器,我使用单选按钮来选择运算符,但我面临单选按钮检查的问题。我希望有人能帮助我。提前谢谢 以下是代码: XML: 您需要在onCreate中标识元素: RadioGroup rg =(RadioGroup) findViewById(R.id.veiksmai); EditText n1 = (EditText) findViewById(R.id.nr1); EditText n2 = (EditText) findViewById(R.id.n

我正在创建一个简单的计算器,我使用单选按钮来选择运算符,但我面临单选按钮检查的问题。我希望有人能帮助我。提前谢谢

以下是代码:

XML:


您需要在onCreate中标识元素:

    RadioGroup rg =(RadioGroup) findViewById(R.id.veiksmai);
    EditText n1 = (EditText) findViewById(R.id.nr1);
    EditText n2 = (EditText) findViewById(R.id.nr2);
    EditText n3 = (EditText) findViewById(R.id.nr3);
    EditText n4 = (EditText) findViewById(R.id.nr4);
    EditText edtResult = (EditText) findViewById(R.id.editText);
    RadioButton plus2 = (RadioButton) findViewById(R.id.plius);
    RadioButton minus2 = (RadioButton) findViewById(R.id.minus);
    RadioButton multi = (RadioButton) findViewById(R.id.daugyba);
并将onCheckedChangedListener而不是onClick侦听器附加到它:

rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        public void onCheckedChanged(RadioGroup arg0, int arg1) {
            if (arg0.getChildAt(0).isPressed()
                    || arg0.getChildAt(1).isPressed()
                    || arg0.getChildAt(2).isPressed()) {

                if (arg0.getChildAt(0).isPressed()) {
                    //do your stuff here
                } else if (arg0.getChildAt(1).isPressed()) {
                    //do your stuff here
                } else if (arg0.getChildAt(2).isPressed()) {
                    //do your stuff here
                }
            }
        }
    });
在您的xml中

android:inputType="number"
这不允许小数或负数。如果需要小数,请使用

android:inputType="numberDecimal"
如果要允许小数和负数,请使用

android:inputType="numberDecimal|numberSigned"
使用时:

android:onClick="onRadioButtonClicked"
您所需要做的就是让一个方法在视图中传递,并在单击按钮(或radioButton)时执行您想要的任何操作。我让每个单选按钮都有自己的方法,名为onRadioButtonClicked表示加号,onRadioButtonClicked1表示减号,onRadioButtonClicked2表示乘法。然后使用更改后的符号在onClickListener中为按钮获取结果

private char sign;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    RadioGroup rg = (RadioGroup) findViewById(R.id.veiksmai);
    final EditText n1 = (EditText) findViewById(R.id.nr1);
    final EditText n2 = (EditText) findViewById(R.id.nr2);
    final EditText n3 = (EditText) findViewById(R.id.nr3);
    final EditText n4 = (EditText) findViewById(R.id.nr4);
    final EditText edtResult = (EditText) findViewById(R.id.editText);
    RadioButton plus2 = (RadioButton) findViewById(R.id.plius);
    RadioButton minus2 = (RadioButton) findViewById(R.id.minus);
    RadioButton multi = (RadioButton) findViewById(R.id.daugyba);

    Button btn = (Button) findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (sign == '+') {
                float result = Float.parseFloat(n1.getText().toString()) + Float.parseFloat(n2.getText().toString()) + Float.parseFloat(n3.getText().toString()) + Float.parseFloat(n4.getText().toString());
                edtResult.setText(Float.toString(result));
            } else if (sign == '-') {
                float result = Float.parseFloat(n1.getText().toString()) - Float.parseFloat(n2.getText().toString()) - Float.parseFloat(n3.getText().toString()) - Float.parseFloat(n4.getText().toString());
                edtResult.setText(Float.toString(result));
            } else if (sign == '*') {
                float result = Float.parseFloat(n1.getText().toString()) * Float.parseFloat(n2.getText().toString()) * Float.parseFloat(n3.getText().toString()) * Float.parseFloat(n4.getText().toString());
                edtResult.setText(Float.toString(result));
            }
        }
    });
}

public void onRadioButtonClicked(View view) {
    sign = '+';
}

public void onRadioButtonClicked1(View view) {
    sign = '-';
}

public void onRadioButtonClicked2(View view) {
    sign = '*';
}

谢谢你的回复,我已经这样做了,但是我现在不能插入显示结果的按钮,因为它被设置为onclicklistener。在公共课外。谢谢!这就是我需要的。
android:onClick="onRadioButtonClicked"
private char sign;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    RadioGroup rg = (RadioGroup) findViewById(R.id.veiksmai);
    final EditText n1 = (EditText) findViewById(R.id.nr1);
    final EditText n2 = (EditText) findViewById(R.id.nr2);
    final EditText n3 = (EditText) findViewById(R.id.nr3);
    final EditText n4 = (EditText) findViewById(R.id.nr4);
    final EditText edtResult = (EditText) findViewById(R.id.editText);
    RadioButton plus2 = (RadioButton) findViewById(R.id.plius);
    RadioButton minus2 = (RadioButton) findViewById(R.id.minus);
    RadioButton multi = (RadioButton) findViewById(R.id.daugyba);

    Button btn = (Button) findViewById(R.id.btn);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (sign == '+') {
                float result = Float.parseFloat(n1.getText().toString()) + Float.parseFloat(n2.getText().toString()) + Float.parseFloat(n3.getText().toString()) + Float.parseFloat(n4.getText().toString());
                edtResult.setText(Float.toString(result));
            } else if (sign == '-') {
                float result = Float.parseFloat(n1.getText().toString()) - Float.parseFloat(n2.getText().toString()) - Float.parseFloat(n3.getText().toString()) - Float.parseFloat(n4.getText().toString());
                edtResult.setText(Float.toString(result));
            } else if (sign == '*') {
                float result = Float.parseFloat(n1.getText().toString()) * Float.parseFloat(n2.getText().toString()) * Float.parseFloat(n3.getText().toString()) * Float.parseFloat(n4.getText().toString());
                edtResult.setText(Float.toString(result));
            }
        }
    });
}

public void onRadioButtonClicked(View view) {
    sign = '+';
}

public void onRadioButtonClicked1(View view) {
    sign = '-';
}

public void onRadioButtonClicked2(View view) {
    sign = '*';
}