Недействительный двойник. Исключение формата числа в Android

У меня это в xml.

<EditText
                android:id="@+id/creditlimitfield2"
                android:hint="0"
                android:inputType="numberDecimal" />

Таким образом, значение по умолчанию для edittext равно 0.

в коде у меня есть это

creditlimit = (EditText) findViewById(R.id.creditlimitfield2);
double credit_limit = Double.valueOf(creditlimit.getText().toString());

В качестве альтернативы я пробовал:

double credit_limit = Double.parseDouble(creditlimit.getText().toString());

А также

double credit_limit = new Double(creditlimit.getText().toString());

При запуске программы выдает ошибку

Numberformatexception. Invalid double "".

Напоминаем, что поле не пустое. Любые предложения будут полезны.


Я видел много вопросов, почти похожих на него, с очень меньшим количеством ответов, и ни один из них не помогает решить мое состояние. Поэтому, пожалуйста, не отмечайте его как «Похожий вопрос», не проверив и другие вопросы.


person Shasi    schedule 07.03.2014    source источник
comment
возможный дубликат Недопустимый double при преобразовании String в Double   -  person The Holy Coder    schedule 07.03.2014
comment
Люди, пожалуйста, внимательно прочитайте оба вопроса, пометив их как дубликаты. Этот вопрос фокусируется на проблеме, которая возникает при использовании решений, приведенных в этом дублирующем вопросе.   -  person Shasi    schedule 07.03.2014


Ответы (3)


getText() не возвращает значение внутри android:hint. Итак, вы пытаетесь преобразовать пустую строку как двойную. вместо этого используйте свойство android:text.

<EditText
    android:id="@+id/creditlimitfield2"
    android:text="0"
    android:inputType="numberDecimal" />
person Blackbelt    schedule 07.03.2014
comment
Я весьма уверен. В противном случае getHint() будет действительно бесполезен. - person Blackbelt; 07.03.2014
comment
@Shasi getText() не вернет подсказку.. он вернет текст, установленный в EditText - person Jaiprakash Soni; 07.03.2014
comment
@JaiSoni, затем получите текст в onResume или при нажатии кнопки, потому что вы звоните слишком рано. может быть в onCreate - person Raghunandan; 07.03.2014

Похоже, creditlimit.getText().toString() не возвращает действительное двойное значение. Убедитесь, что вы ввели действительное двойное значение в поле EditText.

Numberformatexception. Invalid double ""

Пустая строка не является допустимым двойным значением.

Также я предполагаю, что у вас есть это сразу после инициализации, убедитесь, что вы получаете текст из edittext при нажатии кнопки или в onResume

double credit_limit = Double.valueOf(creditlimit.getText().toString())

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

person Raghunandan    schedule 07.03.2014
comment
@ Шаси, как ты можешь быть уверен. Вы предлагаете трассировку стека, что это не 0, это пустая строка - person Raghunandan; 07.03.2014
comment
У @Shasi есть кнопка. введите число в edittext. получить текст из edittext при нажатии кнопки или в onResume. Вы это сделали?? - person Raghunandan; 07.03.2014

попробуйте это
Sting limit=creditlimit.getText().toString(); double credit_limit =0; if(limit!=null && !limit.isEmpty()){ credit_limit = Double.parseDouble(limit); }

person Jaiprakash Soni    schedule 07.03.2014