每当我输入负值时,应用程序崩溃

时间:2014-10-26 18:05:15

标签: java android xml

我正在处理一项要求,当我在第一个文本字段中输入Celsius值时,我有两个文本字段,它会自动转换为华氏度

我面临的问题是当我输入负值应用程序崩溃时

这是我的代码

我的XML文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="20dp" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Celsius" />

<EditText
    android:id="@+id/myTextBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberSigned" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Forenheight" />

<EditText
    android:id="@+id/outputBox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberSigned" />

<TextView
    android:id="@+id/tv_in_for"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Forenheit" />

<EditText
    android:id="@+id/et_in_for"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberSigned" />

<TextView
    android:id="@+id/tv_out_cel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Celsius" />

<EditText
    android:id="@+id/et_out_cel"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="numberSigned" />

</LinearLayout>

这是我的java代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.type2);
    final EditText outputTextBox = (EditText) findViewById(R.id.outputBox);
    final EditText myTextBox = (EditText) findViewById(R.id.myTextBox);
    myTextBox.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s) {
        }

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        public void onTextChanged(CharSequence s, int start, int before,
                int count) {

            String inputs = myTextBox.getText().toString();
            if (TextUtils.isEmpty(inputs)) {
                outputTextBox.setText("0");
            } else {
                float i = Float.parseFloat(inputs);
                i= ((i * 9) / 5) + 32;
                outputTextBox.setText(String.valueOf(i));
            }
        }
    });

    final EditText in_for = (EditText) findViewById(R.id.et_in_for);
    final EditText out_cel = (EditText) findViewById(R.id.et_out_cel);
    in_for.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            String inputs = in_for.getText().toString();
            if (TextUtils.isEmpty(inputs)) {
                in_for.setText("0");
            } else {
                float i = Float.parseFloat(inputs);
                i= ((i - 32) * 5 / 9);
                out_cel.setText(String.valueOf(i));
            }
        }
    });
}

请帮帮我。

1 个答案:

答案 0 :(得分:0)

这未经过测试,但我假设你的问题是它试图将-解析为浮点数,而这是无法完成的。要解决此问题,请catch例外:

        //...
        } else {
            try {
                float i = Float.parseFloat(inputs);
                i= ((i * 9) / 5) + 32;
                outputTextBox.setText(String.valueOf(i));
            } catch (NumberFormatException e) {
                outputBox.setText("0");
            }
        }
        //...