Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.71
Опа!!
14 / 14 / 0
Регистрация: 30.09.2009
Сообщений: 89
#1

textView как "экран" программы-калькулятора - Android

09.08.2011, 13:21. Просмотров 2885. Ответов 8
Метки нет (Все метки)

День добрый. Есть компонент textView, он используется для ввода цифр в программе-калькуляторе. Простая задача оказалась для меня нерешаемой - взять значение из textView, перевести его в double, умножить\сложить\разделить на другое, преобразовать и положить обратно в textView

Java
1
2
3
4
5
double value = Double.parseDouble(cBuf.toString());
double result = Double.parseDouble(tv.getText().toString());
result += value;
                
tv.setText((CharSequence)String.valueOf(result));
вроде бы все логично и верно, но приложение вылетает с Force Close

пробовал массу других вариантов преобразований - желаемого результата так и не получил. Подскажите, где я не прав? Еще раз напомню - взять значение из textView (там могут быть либо цифры либо цифра.цифра), преобразовать его в числовой формат (double), умножить (сложить, вычесть и т.д.) на другое значение (в моем случае оно тоже преобразовывается в числофой формат все из того же CharSequence, возвращаемого getText()) и положить результат операции обратно в textView через .setText()

Добавлено через 2 минуты
.. более того, вылетает даже с int:

Java
1
2
3
4
5
int buf1 = Integer.parseInt(cBuf.toString());
int buf2 = Integer.parseInt(tv.getText().toString());               
int result = buf1 + buf2;
 
tv.setText((CharSequence)Integer.toString(result));
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2011, 13:21     textView как "экран" программы-калькулятора
Посмотрите здесь:

блокирование кнопок "Home" "Back" Android
Android Как заставить Eclipse "забыть" об ошибках в xml файлах?
Как сделать приложение полноэкранным и убрать вспомогательные кнопки "назад, главный экран." Android
Android Не работает эмулятор (прекращена работа программы "emulator-arm.exe"
Что означают конструкции "finally" и "throw new"? Android
Визуализация нажатия на изображение. Как поставить картинку на "нажатие" Android
Android Как поместить surfaceview или glsurfaceview на "пол" экрана
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
petruchodd
09.08.2011, 14:11
  #2

Не по теме:

Смотри в логе (DDMS) что пишет. Или вылаживай сюда ..

Опа!!
14 / 14 / 0
Регистрация: 30.09.2009
Сообщений: 89
09.08.2011, 14:25  [ТС]     textView как "экран" программы-калькулятора #3
Вот файл проекта
Вложения
Тип файла: rar SimpleCalc.rar (45.6 Кб, 60 просмотров)
Опа!!
14 / 14 / 0
Регистрация: 30.09.2009
Сообщений: 89
09.08.2011, 14:37  [ТС]     textView как "экран" программы-калькулятора #4
обработка операций висит только на плюсе
petruchodd
 Аватар для petruchodd
89 / 89 / 8
Регистрация: 23.06.2009
Сообщений: 507
09.08.2011, 15:22     textView как "экран" программы-калькулятора #5
в case + : не может пропарсить "+" как integer
int buf1 = Integer.parseInt(cBuf.toString());. Насколько я понял ты хочешь строку типа " 2+2+3+4" перевести в результат ? тоесть калькулятор твой считает не так : 2 (ввел) + (нажал) ввел ещо 2 и это сразу показывает новый результат, а в твоем случае мы нажали 2... + и на вводе уже пусто. Значит предположение мое верно.. ввел 2... ничего не показывает, ввел ещо 2 ( при этом нажимаем +) и так несколько раз.. Потом нажав на равно мы получим суму всех тех цыфр что мы ввели ?.
ошибка вот
C++
1
08-09 11:17:25.852: ERROR/AndroidRuntime(942): Caused by: java.lang.NumberFormatException: unable to parse '+' as integer
"строка 96"

К сожелению в андроиде я такого не встречал, но друг подсказал что такой фигней он когда то страдал на javaScript. Там есть функция eval.. так что советую копать в этом направлении. Сейчас на работе.. периодически буду тоже просматривать, а то самому интересно.
Опа!!
14 / 14 / 0
Регистрация: 30.09.2009
Сообщений: 89
09.08.2011, 15:46  [ТС]     textView как "экран" программы-калькулятора #6
Сперва вбиваем первое число, допустим 123, жмем на +, введенное число сохраняется в cBuf, textView очищается и ждет ввода следующего значения. По нажатию + запомнили что был нажат именно +. По нажатию равно свитч на переменную в которую положили +, ну а там уже складываются значения cBuf и текущее значение, введенное в textView, результат кладется в textView

Добавлено через 17 минут
Java
1
2
3
4
5
6
7
8
9
10
11
switch (curOperation)
        {
            case R.id.button13:
                // снизу закоменченный блок всех моих попыток
                int buf1 = Integer.parseInt(cBuf.toString());
                int buf2 = Integer.parseInt(tv.getText().toString());               
                int result = buf1 + buf2;
 
                tv.setText(Integer.toString(result));
                break;
...
вот свитч через интовое значение R.id.xxx, заходит в него точно, форс клоуз все равно имеется


Код
08-09 11:46:05.219: ERROR/AndroidRuntime(407): FATAL EXCEPTION: main
08-09 11:46:05.219: ERROR/AndroidRuntime(407): java.lang.IllegalStateException: Could not execute method of the activity
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.view.View$1.onClick(View.java:2144)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.view.View.performClick(View.java:2485)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.view.View$PerformClick.run(View.java:9080)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.os.Handler.handleCallback(Handler.java:587)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.os.Handler.dispatchMessage(Handler.java:92)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.os.Looper.loop(Looper.java:123)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.app.ActivityThread.main(ActivityThread.java:3683)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.reflect.Method.invokeNative(Native Method)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.reflect.Method.invoke(Method.java:507)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at dalvik.system.NativeStart.main(Native Method)
08-09 11:46:05.219: ERROR/AndroidRuntime(407): Caused by: java.lang.reflect.InvocationTargetException
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.reflect.Method.invokeNative(Native Method)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.reflect.Method.invoke(Method.java:507)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at android.view.View$1.onClick(View.java:2139)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     ... 11 more
08-09 11:46:05.219: ERROR/AndroidRuntime(407): Caused by: java.lang.NumberFormatException: unable to parse '' as integer
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.Integer.parseInt(Integer.java:362)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at java.lang.Integer.parseInt(Integer.java:332)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     at tgn.fraggjkee.android.SimpleCalc.SimpleCalcActivity.solveIt(SimpleCalcActivity.java:96)
08-09 11:46:05.219: ERROR/AndroidRuntime(407):     ... 14 more
petruchodd
 Аватар для petruchodd
89 / 89 / 8
Регистрация: 23.06.2009
Сообщений: 507
09.08.2011, 15:53     textView как "экран" программы-калькулятора #7
ну в логе ты ж видишь, та же самая байда. Не может теперь пропарсить пустую строку (" ") Имхо парсом тут не получится.. может имеет смысл использовать отдельно буфер который будет подсчитывать это всё пошагово на фоне ?
Опа!!
14 / 14 / 0
Регистрация: 30.09.2009
Сообщений: 89
09.08.2011, 18:20  [ТС]     textView как "экран" программы-калькулятора #8
Цитата Сообщение от petruchodd Посмотреть сообщение
ожет имеет смысл использовать отдельно буфер который будет подсчитывать это всё пошагово на фоне ?
суровый подход для такой простой операции для простого калькулятора надеюсь, найдется и более простой и очевидный метод!

Добавлено через 49 минут
все, разобрался, дело-то было не в преобразованиях, неправильное значение помещалось в cBuf, оттуда и ошибка в невозможности запарсить пустую переменную cBuf и что-то там из нее конвертировать

Добавлено через 1 час 32 минуты
petruchodd, забыл сказать огромное спасибо за помощь ;-)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2011, 15:39     textView как "экран" программы-калькулятора
Еще ссылки по теме:

Android Как отловить причину "unfortunately, application has stopped" на эмуляторе?
Android Написание программы "Таймер"
Как вызвать из программы системное окно "Точка доступа WLAN"? Android
Как добавить строку "." в начале в ListView со своим обработчиком Android
Android Вывести символ "градус" в TextView

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
petruchodd
10.08.2011, 15:39     textView как "экран" программы-калькулятора
  #9

Не по теме:

я как бы и ничем не помог ( , но если что обращайтесь))

Yandex
Объявления
10.08.2011, 15:39     textView как "экран" программы-калькулятора
Ответ Создать тему
Опции темы

Текущее время: 07:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru