我有一个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 如果有人知道解决方案,请帮助我 感谢
答案 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
,因为焦点监听器的内容是什么。因此,只有在解析值时才需要使用EditText
。 contact_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导致这里因为您可能正在输入一些不是数字或浮点数的东西......限制一些特殊字符。