2015-10-08 4 views
0

Я один Edittext.My EditText inputType является numberDecimalEditText преобразование входного значения плавать в андроиде

<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 если кто-нибудь знает решение, пожалуйста, помогите мне спасибо

+0

Что вы вводите в edittext. – Piyush

ответ

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()); 
} 
+0

Я обновил свой код, но я все еще не могу изменить значение ввода, когда я заканчиваю фокус @Thomas R. – donoachua

+0

Вы по-прежнему получаете исключение? –

+0

Как уже упоминалось в другом ответе, измените 'contact_search' на' transfer_maney'. Вы ссылаетесь на неправильный элемент представления. Я обновил свой ответ. –

0

Вопрос заключается в том, что, когда вы не вводить какой-либо вклад в этом Фейлд это происходит. вам необходимо убедиться, что длина строки больше 0. Я предлагаю вам сделать простой, если проверка как

if(input!=null && input.length>0){ 
//parse to float 
}else { 
//throw error to user 
} 
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()для входа отлаживать информации. Используйте это строго для исключений.

+0

Я изменил его и работал, но если я ввожу 17 i recived 17.0, и я хочу получить 17.00 и т. Д. – donoachua

+0

Поплавок по умолчанию будет отображаться только с одним 0 после десятичной дроби. Используйте String.format() подобно Log.d ("inputFloatValue", String.format ("%. 2f", inputFloaValue)); получить 17.00. –

0

Вы делаете это в значительной степени правильно. Просто небольшое изменение в вашем заявлении, если

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

       } 
      } 

     } 
    }); 
+0

Я изменил его и работал, но если я ввожу 17 i recived 17.0, и я хочу получить 17.00 и т. Д. @Sukhvir – donoachua

+0

Используйте это: float inputFloaValue = Float.parseFloat (contact_search.getText(). ToString(). Trim()); Строка userInput = String.format ("%. 2f", inputFloaValue); – Sukhvir

0

NumberFormatException вызывает здесь потому, что вы могли бы входить некоторые вещи, которые не являются числом или поплавок ... ограничить некоторые специальные символы.

Смежные вопросы