1

我想转换EditText为浮动。我这样做:

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());

该应用程序可以加载。

我能做什么?

4

6 回答 6

2

我的猜测edt.getText().toString()是不会返回一个可以变成浮点数的值。尝试将以下内容放在您的代码周围

`

float number = 0;
try{
   number = Float.valueOf(edt.getText().toString());
} catch (NumberFormatException e) {
   e.printStackTrace();
}

` 这应该给你一个线索,为什么它会死。

于 2013-04-07T16:49:42.200 回答
0

如果 中没有 a NumberEditText则无法将其转换为浮点数,您将得到NumberFormatException.

Float.valueOf因此,在该方法周围添加一个 try-catch 。

于 2013-04-07T16:46:22.087 回答
0

您的应用程序很可能会崩溃,因为您在应用程序刚刚启动时尝试将 EditText 的内容转换为浮点数。此时,EditText 可能是空的,或者填充了您在布局文件中设置的一些默认文本,这可能会导致 aNullPointerExceptionNumberFormatException.

尝试在 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) {

    } 

});
于 2013-04-07T16:46:32.900 回答
0

您试图EditText在应用程序打开后获取 right 的值,这意味着没有输入任何内容,应用程序会抛出NumberFormatException.

只有当您确定输入了某些内容时,您才应该获取在 中输入的值EditText,例如OnClickButton.

于 2013-04-07T16:46:45.433 回答
0

edt必须包含文本,并且文本中的每个字符必须是数字或小数点。特别注意空字符串“”不代表0。它不能被解释为浮点值,所以会导致异常。只有“0”、“0.0”等可以解释为零。

您应该edt在获得值之前测试 的值,catch并且Exception正确。您还应该将 of 设置inputTypeedt十进制。

于 2013-04-07T16:47:57.907 回答
0
EditText edt = (EditText) findViewById(R.id.price);
float number=   Float.parseFloat(edt.getText().toString());
于 2013-04-09T09:01:42.527 回答