Edittext将输入值转换为android中的float

时间:2015-10-08 11:25:32

标签: android android-edittext focuslistener

我有一个Edittext.My edittext inputType是numberDecimal

 <EditText
                            android:layout_width="wrap_content"
                            android:layout_height="@dimen/u_widget_height"
                            android:id="@+id/transfer_maney"
                            android:layout_alignParentTop="true"

                            android:singleLine="true"
                            android:inputType="numberDecimal"
                            android:hint="Amount"
                            android:layout_alignParentLeft="true"
                            android:layout_alignParentStart="true"
                            android:layout_toLeftOf="@+id/centerline"
                            android:layout_toStartOf="@+id/centerline"
                            android:layout_marginRight="@dimen/u_common_margin_left"
                            />

我想在我的Editytext.i写完焦点时改变输入值。我写了一些java代码,但我有NumberFormatException

  transfer_maney.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {

            float inputFloatValue;
            if(!hasFocus)
            {
                if (TextUtils.isEmpty(contact_search.getText().toString())) {
                    inputFloatValue = 0F;

                } else {
                    inputFloatValue = Float.parseFloat(contact_search.getText().toString().trim());
                    Log.e("inputFloatValue",inputFloatValue+"");
                }
            }

        }
    });

简单我想在我的Edittext中完成焦点时将输入值整数更改为float 如果有人知道解决方案,请帮助我 感谢

5 个答案:

答案 0 :(得分:1)

更改

float inputFloaValue= Float.parseFloat(transfer_maney.getText().toString().trim());

为:

float inputFloatValue;
if (TextUtils.isEmpty(transfer_maney.getText().toString())) {
  inputFloatValue = 0F;
} else {
  inputFloatValue = Float.parseFloat(transfer_maney.getText().toString().trim());
}

答案 1 :(得分:0)

问题在于,当你在该场地中输入任何输入时,它就会发生。你需要确保字符串的长度大于0.我建议你做一个简单的检查,如

if(input!=null && input.length>0){
//parse to float
}else {
//throw error to user
}

答案 2 :(得分:0)

我认为您希望将transfer_maney金额转换为float,因为焦点监听器的内容是什么。因此,只有在解析值时才需要使用EditTextcontact_search似乎不合适。

String amount = transfer_maney.getText().toString().trim();

float inputFloaValue = 0f;
if(amount.length() > 0)
{
    inputFloaValue = Float.parseFloat(amount);
    Log.d("inputFloatValue", String.valueOf(inputFloaValue));
}

另外,请勿使用Log.e()来记录 debug 信息。严格用于例外。

答案 3 :(得分:0)

你做得非常好。在if语句中稍作修改

 if(transfer_maney.getText().toString().length()>0)
    if(transfer_maney.getText().toString().trim().length()>0)

    transfer_maney.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(!hasFocus)
            {
                if(transfer_maney.getText().toString().trim().length()>0)
                {
                    float inputFloaValue= Float.parseFloat(contact_search.getText().toString().trim());
                    Log.e("inputFloatValue",String.valueOf(inputFloaValue));

                }
            }

        }
    });

答案 4 :(得分:0)

NumberFormatException导致这里因为您可能正在输入一些不是数字或浮点数的东西......限制一些特殊字符。