我无法检查我的单选按钮以查看计算结果android(使用onclicklistener)

时间:2015-05-03 22:57:21

标签: java android radio-button

我正在创建一个简单的计算器,我使用单选按钮来选择操作符,但我遇到了单选按钮检查的问题。我希望有人会帮助我。提前致谢。

以下是以下代码:

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);

}

        }

2 个答案:

答案 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 = '*';
}