Я новичок в Android, и у меня проблема. Я пытаюсь выполнить некоторые числовые вычисления для некоторого текста, введенного в одно или несколько полей EditText (каждое поле имеет соответствующий алгоритм для определения результата), а затем сохраняет результат/результаты в некоторых текстовых видах, связанных с EditTexts. EditText1 связан с TextView1; EditText2 связан с TextView2. В моей программе будет десять EditTexts, каждый из которых имеет связанный TextView. Все или никакие из EditTexts могут содержать в себе некоторые числовые данные. Вычисление происходит после нажатия кнопки (с использованием andriod: onClick = "buttonPressed"), в этот момент любые EditTexts, которые имеют числовой ввод, должны извлекать и вычислять свои данные (с формулой, специфичной для этой части данных) с сохранением результата в специальном TextView в EditText.Ошибки, выполняющие числовые вычисления по данным EditText
Когда я использую только один EditText и один TextView, все в порядке. Данные из EditText правильно анализируются, вычисляются, и результат сохраняется в TextView. Вот код, в этом случае:
public void buttonPressed(View view)
{
if (editText1.getText() != null)
textView1.setText(Double.toString(Double.valueOf(editText1.getText().toString())/12));
}
Однако, если я пытаюсь расширить этот код и использовать другой EditText и TextView вроде этого:
public void buttonPressed(View view)
{
if (editText1.getText() != null)
textView1.setText(Double.toString(Double.valueOf(editText1.getText().toString())/12));
if (editText2.getText() != null)
textView2.setText(Double.toString(Double.valueOf(editText2.getText().toString())/107));
}
я получаю некоторые ошибки, которые, кажется, указывают на разборе проблема. Вот выход LogCat (я не силен в интерпретации этого):
11-07 20:38:14.191: E/AndroidRuntime(1570): FATAL EXCEPTION: main
11-07 20:38:14.191: E/AndroidRuntime(1570): java.lang.IllegalStateException: Could not execute method of the activity
11-07 20:38:14.191: E/AndroidRuntime(1570): at android.view.View$1.onClick(View.java:3597)
11-07 20:38:14.191: E/AndroidRuntime(1570): at android.view.View.performClick(View.java:4202)
11-07 20:38:14.191: E/AndroidRuntime(1570): at android.view.View$PerformClick.run(View.java:17340)
11-07 20:38:14.191: E/AndroidRuntime(1570): at android.os.Handler.handleCallback(Handler.java:725)
11-07 20:38:14.191: E/AndroidRuntime(1570): at android.os.Handler.dispatchMessage(Handler.java:92)
11-07 20:38:14.191: E/AndroidRuntime(1570): at android.os.Looper.loop(Looper.java:137)
11-07 20:38:14.191: E/AndroidRuntime(1570): at android.app.ActivityThread.main(ActivityThread.java:5039)
11-07 20:38:14.191: E/AndroidRuntime(1570): at java.lang.reflect.Method.invokeNative(Native Method)
11-07 20:38:14.191: E/AndroidRuntime(1570): at java.lang.reflect.Method.invoke(Method.java:511)
11-07 20:38:14.191: E/AndroidRuntime(1570): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-07 20:38:14.191: E/AndroidRuntime(1570): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-07 20:38:14.191: E/AndroidRuntime(1570): at dalvik.system.NativeStart.main(Native Method)
11-07 20:38:14.191: E/AndroidRuntime(1570): Caused by: java.lang.reflect.InvocationTargetException
11-07 20:38:14.191: E/AndroidRuntime(1570): at java.lang.reflect.Method.invokeNative(Native Method)
11-07 20:38:14.191: E/AndroidRuntime(1570): at java.lang.reflect.Method.invoke(Method.java:511)
11-07 20:38:14.191: E/AndroidRuntime(1570): at android.view.View$1.onClick(View.java:3592)
11-07 20:38:14.191: E/AndroidRuntime(1570): ... 11 more
11-07 20:38:14.191: E/AndroidRuntime(1570): Caused by: java.lang.NumberFormatException: Invalid double: ""
11-07 20:38:14.191: E/AndroidRuntime(1570): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
11-07 20:38:14.191: E/AndroidRuntime(1570): at java.lang.StringToReal.parseDouble(StringToReal.java:248)
11-07 20:38:14.191: E/AndroidRuntime(1570): at java.lang.Double.parseDouble(Double.java:295)
11-07 20:38:14.191: E/AndroidRuntime(1570): at java.lang.Double.valueOf(Double.java:332)
11-07 20:38:14.191: E/AndroidRuntime(1570): at com.example.breadmakingconversions.MainActivity.sendToConvert(MainActivity.java:160)
11-07 20:38:14.191: E/AndroidRuntime(1570): ... 14 more
Я не понимаю, почему метод синтаксического анализа я использовал для выполнения расчетов по этим данным в EditText (я не был уверен, как это сделать это, но я нашел это путем большого количества проб и ошибок) должен работать для одного поля, но не для двух. Я пробовал много альтернативных способов сделать это за последние несколько часов и не могу понять это.
Любая помощь очень ценится!
Редактировать: Я забыл сказать, что все мои EditTexts имеют android: numeric = "decimal" (я знаю, что это устарело, но я все равно использую его здесь), так что у меня никогда не будет ввода, который не является числовым.
вы могли бы просто поймать НФО, это объяснило бы пустой, а также неправильный формат, если не было. – njzk2
Я довольно уверен, что editText1.getText() никогда не может вернуть значение null. – njzk2