应用程序因 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());
我对整个 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());