Java 将EditText转换为float-android eclipse
我想将Java 将EditText转换为float-android eclipse,java,android,Java,Android,我想将EditText转换为float。我这样做: EditText edt = (EditText) findViewById(R.id.price); float number = Float.valueOf(edt.getText().toString()); 应用程序未加载到我的设备和模拟器中。在这两本书中都写着: "the application has stopped unexpectedly. please try again." 如果我删除此行: float number =
EditText
转换为float。我这样做:
EditText edt = (EditText) findViewById(R.id.price);
float number = Float.valueOf(edt.getText().toString());
应用程序未加载到我的设备和模拟器中。在这两本书中都写着:
"the application has stopped unexpectedly. please try again."
如果我删除此行:
float number = Float.valueOf(edt.getText().toString());
应用程序可以加载
我该怎么办?如果
编辑文本中没有数字
,则无法将其转换为浮点,您将获得数字格式异常
因此,在Float.valueOf
方法周围添加一个try catch。应用程序很可能会崩溃,因为在应用程序刚刚启动时,您试图将EditText的内容转换为Float。此时,EditText可能为空,或者填充了布局文件中设置的一些默认文本,这可能会导致出现NullPointerException
或NumberFormatException
尝试在TextWatcher中获取浮点值:
edt.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
float number = Float.valueOf(edt.getText().toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
您试图在应用程序打开后立即获取EditText
的值,这意味着没有输入任何内容,应用程序将抛出NumberFormatException
当您确定输入了某些内容时,仅应获取在EditText
中输入的值,例如在按钮的OnClick
事件中,edt
必须包含文本,并且文本中的每个字符必须是数字或小数点。请特别注意,空字符串“”并不表示0。它不能解释为浮点值,因此将导致异常。只有“0”、“0.0”等可以解释为零
在获得值之前,您应该测试edt
的值,并正确地捕获异常。您还应该将edt
的inputType
设置为十进制。我的猜测是edt.getText().toString()
没有返回一个可以变成浮点的值。尝试在代码周围添加以下内容
`
`
这应该给你一个线索,为什么它会死
EditText edt = (EditText) findViewById(R.id.price);
float number= Float.parseFloat(edt.getText().toString());
EditText edt = (EditText) findViewById(R.id.price);
float number= Float.parseFloat(edt.getText().toString());