我有错误:不幸的是:已经停止了

时间:2014-06-05 09:32:51

标签: java android eclipse runtime-error

首先,如果用户不在编辑文本中写任何内容或用户取消选中单选按钮警报错误,我需要提醒messege。但是我的节目停了。

其次,用户可以查看更多的单选按钮?如何只选择一个单选按钮?

这是我的代码

 public class MainActivity extends Activity {

    TextView t1;
    EditText e1,e2;
    Button b1;
    RadioButton r1,r2,r3;

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

        e1 = (EditText) findViewById(R.id.editText1);
        e2 = (EditText) findViewById(R.id.editText2);
        b1 = (Button) findViewById(R.id.button1);
        r1 = (RadioButton) findViewById(R.id.radioButton1);
        r2 = (RadioButton) findViewById(R.id.radioButton2);
        r3 = (RadioButton) findViewById(R.id.radioButton3);
        t1 = (TextView) findViewById(R.id.textView4);

        r1.setChecked(false);
        r2.setChecked(false);
        r3.setChecked(false);


        b1.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {

                int psi = Integer.parseInt(e1.getText().toString());
                int cable = Integer.parseInt(e2.getText().toString());
                final double bars = 0.7;

                int psiTen = (psi / 10);
                int bar = (int)(psiTen * bars);


                if(r1.isChecked() == true){
                    r2.setChecked(false);
                    r3.setChecked(false);
                }
                else if(r2.isChecked() == true){
                    r1.setChecked(false);
                    r3.setChecked(false);
                }
                else if(r3.isChecked() == true){
                    r2.setChecked(false);
                    r1.setChecked(false);
                }

                if(e1.getText().toString() == "" || e2.getText().toString() == "") t1.setText("Fill field,please");

                if(bar <= 400 && r1.isChecked()  && cable == 1){
                    t1.setText("Engine 1");
                }
                else if(bar >= 400 && r2.isChecked()  && cable == 1){
                    t1.setText("Engine 2");
                }
                else if(bar >= 400 && r3.isChecked()  && cable == 2){
                    t1.setText("Engine 3");
                }
                else if(bar >= 400 && r1.isChecked()  && cable == 2){
                    t1.setText("Engine 4");
                }
                else if(bar <= 400 && r2.isChecked()  && cable == 2){
                    t1.setText("Engine 5");
                }
                else if(bar >= 400 && r3.isChecked()  && cable == 2){
                    t1.setText("Engine 6");
                }
                else if(bar <= 400 && r3.isChecked()  && cable == 3){
                    t1.setText("Engine 7");
                }
                else if(bar <= 400 && r1.isChecked()  && cable == 3){
                    t1.setText("Engine 8");
                }
                else if(bar <= 400 && r2.isChecked()  && cable == 3){
                    t1.setText("Engine 9");
                }
                else if(bar >= 400 && r3.isChecked()  && cable == 3){
                    t1.setText("Engine 10");
                }
                else if(bar >= 400 && r1.isChecked()  && cable == 3){
                    t1.setText("Engine 11");
                }
                else if(bar >= 400 && r2.isChecked()  && cable == 3){
                    t1.setText("Engine 12");
                }

            }

        });

2 个答案:

答案 0 :(得分:3)

问题在于:

int psi = Integer.parseInt(e1.getText().toString());
int cable = Integer.parseInt(e2.getText().toString());  

如果值为NumberFormatException或非数字,则会抛出""。尝试解析之前,请尝试检查空字符串。您正在检查它,但是在您实际尝试解析之后,您正在执行此操作。在解析之前做它。

顺便说一句:

if(e1.getText().toString() == "" || e2.getText().toString() == "") t1.setText("Fill field,please");  

不是你如何检查字符串的相等性。使用equals()方法。

如同here所述,在RadioGroup中只选择一个RadioButton组。

答案 1 :(得分:0)

您还可以检查从getText返回的可编辑长度是否为零:

if(e1.getText().length == 0)

或将Editable转换为字符串:

if(e1.getText().toString().isEmpty())

要确保只能选择一个单选按钮,您需要将单选按钮括在一个广播组中:

<RadioGroup
        android:id="@+id/active_group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <RadioButton
            ...
        />

        <RadioButton
            ...
        />
</RadioGroup>