我正在创建一个简单的计算器,我使用单选按钮来选择操作符,但我遇到了单选按钮检查的问题。我希望有人会帮助我。提前致谢。
以下是以下代码:
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/tekstas"
android:id="@+id/textas"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_gravity="center_horizontal" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:id="@+id/nr1"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_gravity="center_horizontal" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:id="@+id/nr2"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_gravity="center_horizontal" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:id="@+id/nr3"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_gravity="center_horizontal" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:id="@+id/nr4"
android:layout_marginTop="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_gravity="center_horizontal" />
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/veiksmai">
<RadioButton android:id="@+id/plius"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pliusas"
android:padding="30dp"
android:onClick="onRadioButtonClicked"
/>
<RadioButton android:id="@+id/minus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/minusas"
android:padding="30dp"
android:onClick="onRadioButtonClicked"
/>
<RadioButton android:id="@+id/daugyba"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/daugyba"
android:padding="30dp"
android:onClick="onRadioButtonClicked"
/>
</RadioGroup>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/rezultatas"
android:id="@+id/btn"
android:layout_gravity="center_horizontal"
android:onClick="onClick"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_gravity="center_horizontal" />
</LinearLayout>
的java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View view) {
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);
int selected = rg.getCheckedRadioButtonId();
RadioButton plus2 = (RadioButton) findViewById(selected);
RadioButton minus2 = (RadioButton) findViewById(selected);
RadioButton multi = (RadioButton) findViewById(selected);
if("+".equals(plus2.getText())) {
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("-".equals(minus2.getText())){
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("*".equals(multi.getText())){
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));
}
}
};
// Getting reference of the button btnResult
Button btn = (Button) findViewById(R.id. btn);
// Setting onclick listener
btn.setOnClickListener(listener);
}
}
答案 0 :(得分:0)
您需要在onCreate中识别您的元素:
XNextEvent
并将onCheckedChangedListener附加到它,而不是onClick侦听器:
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);
答案 1 :(得分:0)
在你的xml中你有
android:inputType="number"
这不允许小数或负数。如果你想要小数,请使用
android:inputType="numberDecimal"
如果你想允许小数和负数使用
android:inputType="numberDecimal|numberSigned"
使用时:
android:onClick="onRadioButtonClicked"
您需要做的就是在视图中传递一个方法,并在按钮(或radioButton)上单击执行您想要的任何操作。我让每个单选按钮都有自己的方法,名为onRadioButtonClicked for plus,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 = '*';
}