将EditText转换为float - android eclipse

时间:2013-04-07 16:43:59

标签: 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 = Float.valueOf(edt.getText().toString());

该应用可以加载。

我该怎么办?

6 个答案:

答案 0 :(得分:2)

我的猜测是edt.getText().toString()没有返回一个可以变成浮点数的值。尝试在代码周围添加以下内容

`

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

` 这应该会让你知道它为什么会死亡。

答案 1 :(得分:0)

如果Number中没有EditText您无法将其转换为浮点数,那么您将获得NumberFormatException

所以在Float.valueOf方法周围添加一个try-catch。

答案 2 :(得分:0)

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

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

    } 

});

答案 3 :(得分:0)

您正在尝试在应用程序打开后立即获取EditText的值,这意味着没有输入任何内容,应用程序抛出NumberFormatException

当您确定输入了某些内容时,您应该只在EditText中输入值,例如在OnClick的{​​{1}}事件中。

答案 4 :(得分:0)

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

您应该在获得值之前测试edt的值,并catch Exception正确测试inputType。您还应将edt {{1}}设置为十进制。

答案 5 :(得分:0)

EditText edt = (EditText) findViewById(R.id.price);
float number=   Float.parseFloat(edt.getText().toString());