Java 我能';t检查我的单选按钮以查看android计算结果(使用onclicklistener)
我正在创建一个简单的计算器,我使用单选按钮来选择运算符,但我面临单选按钮检查的问题。我希望有人能帮助我。提前谢谢 以下是代码: XML: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
您需要在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 = '*';
}