应用程序因 editText 而崩溃

App Crashes With editText

我对整个 java/android 编码还很陌生,所以我正在寻求更有经验的人的帮助。您是否知道为什么当我为 editText 标签回击 space 时我的应用程序一直崩溃。我相信这是因为双重原因,当内容返回 spaces 时,它会输入一个空值,但是我一直在寻找一个 if 语句来输入并使其成为空,这样它就可以了。 xml sheet 和 edit/text 视图是基本的标签,你知道的。如果有人知道我怎样才能让它不崩溃,我将不胜感激:)谢谢

package xxxx.xxxx.xxxx;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import static java.lang.Math.*;
import java.util.ArrayList;
import java.util.Arrays;

public class TemperatureActivity extends Activity {
    EditText input;
    TextView output;
    String afterTextChanged = "";
    String beforeTextChanged = "";
    String onTextChanged = "";

        //    MainActivity instance = new MainActivity();
        public void onCreate (Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.temperature_layout);
//            setContentView(R.layout.activity_main);

            input = (EditText) findViewById(R.id.TemperatureInput);
            output = (TextView) findViewById(R.id.CelsiusOutput);
            input.addTextChangedListener(watch);

        }

        public TextWatcher watch = new TextWatcher() {
            @Override
            public void afterTextChanged(Editable arg0) {
                onTextChanged = input.getText().toString();
                // TODO Auto-generated method stub

            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                          int arg3) {
                beforeTextChanged = input.getText().toString();
                // TODO Auto-generated method stub
            }


            @Override
            public void onTextChanged(CharSequence s, int a, int b, int c) {
                afterTextChanged = input.getText().toString();
                // TODO Auto-generated method stub
                //Parsing String to double
                double cercuils = Double.parseDouble(s.toString());
                double faherenheit = cercuils * 9 / 5 + 32;

                if (input == null) {
                    output.setText("ERROR");
                }



                output.setText(faherenheit + "");
                if (a == 9) {
                    Toast.makeText(getApplicationContext(),
                            "Maximum Limit Reached", Toast.LENGTH_SHORT).show();
                }
            }
        };
    }
//}

// Formula for C to F
//°C  x  9/5 + 32 = °F

// Formula for f to c
//37°C x  9/5 + 32 = 98.6°F

在这一行

double cercuils = Double.parseDouble(s.toString());

您将 String 解析为 Double 值。但也许您的 String 不是数字或为空。 你可以使用 try catch 来解析它是否是数字。

 double cercuils=0;
            try {
                 cercuils = Double.parseDouble(s.toString());
            } catch (NumberFormatException e) {
                 cercuils = 0;
            }

并使用

if(cercuils ==0)
{
output.setText("Please enter a number");
}else{
output.setText(faherenheit + "");
}

而不是

output.setText(faherenheit + "");

您必须在小数点后加上“0”,而不仅仅是“.”。 .或者您也可以通过添加“0”以编程方式解决此问题。按如下方式更新您的代码,

num2 = Double.parseDouble("0" + editText2.getText().toString());