Android:从EditText字段获取数据时获取NumberFormatException
java.lang.RuntimeException:无法启动活动组件信息{com.project/com.project.simple}:java.lang.NumberFormatExceptionAndroid:从EditText字段获取数据时获取NumberFormatException,android,android-layout,android-emulator,Android,Android Layout,Android Emulator,java.lang.RuntimeException:无法启动活动组件信息{com.project/com.project.simple}:java.lang.NumberFormatException EditText et1,et2,et3; Button b1, b2; Float two,three,four; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated
EditText et1,et2,et3;
Button b1, b2;
Float two,three,four;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.can);
et1 = (EditText) findViewById(R.id.editText1);
two = Float.valueOf(et1.getText().toString());
et2 = (EditText) findViewById(R.id.editText2);
three = Float.valueOf(et2.getText().toString());
et3 = (EditText) findViewById(R.id.editText3);
four = Float.valueOf(et3.getText().toString());
b1 = (Button) findViewById(R.id.button1);
b2 = (Button) findViewById(R.id.button2);
b1.setOnClickListener(new OnClickListener() {
似乎输入无效。请检查两次,确保您没有尝试将字母解析为数字。如果您有一个float,请检查您是否使用了正确的区域设置进行解析。在德国是pi 31415。。。而不是3.1415 如果无法准备值,可以将解析try放入try-catch块中,如下所示:
float value;
try {
value=Float.parseFloat(someString);
} catch(NumberFormatException e) {
// input was no valid float
}
您位于指定字段的
onCreate()
中。用户没有时间输入任何有效数据。您需要将数据的提取移到其他地方…比如您的onClick()
可能。将代码从onrate移到其他方法
(例如按钮的onClick方法)
你应该
试试这个:
try{
two = Float.parseFloat(et1.getText().toString());
}catch(NumberFormatException e){
two = 0;
Toast toast = Toast.makeText(this, 'Invalid number format on `two` field', 500);
toast.show();
}
对于每个文本字段,您要阅读的内容
评论:
float格式为2.3,不使用2,3未输入任何输入…在此项目中从外部获取值。在这种情况下,请将
float.valueOf()
语句放入try-catch块中