Получение NumberFormatException для TextView.getText () - PullRequest
0 голосов
/ 05 марта 2020

Я новичок, который отчаянно пытался понять, как добиться следующего: у меня есть 3 TextView, отображающие 3 числа c значения (всегда целые числа) на экране в виде текста, такие как: 50, 100, 200. Затем, после некоторого события, я хочу, чтобы эти 3 строки были указаны в качестве значений в моих PieEntries в ArrayList. Я не могу просто получить текст из TextView и поместить его в качестве значения для записи, поэтому я попытался использовать Integer.parseInt для чтения строк как целых (поскольку они на самом деле состоят из всех числа), или также Integer.valueOf, но я получаю только java .lang.NumberFormatException: для входной строки: «Первая» ошибка после cra sh. Это та часть, о которой я говорю:

ArrayList<PieEntry> myData(){
        ArrayList<PieEntry> myArray = new ArrayList<PieEntry>();

        arrayValue.add(new PieEntry(Integer.parseInt(TextView1.getText().toString()), "First"));
        arrayValue.add(new PieEntry(Integer.parseInt(TextView2.getText().toString()), "Second"));
        arrayValue.add(new PieEntry(Integer.parseInt(TextView3.getText().toString()), "Third"));
        return graphValues;
    }

Я не буду вставлять здесь весь код, так как график на самом деле работает нормально, если я вручную помещаю значения вместо попытки разобрать целые числа из TextViews. Также: когда я впервые начинаю набирать «new PieEntry», подсказка ясно говорит, что для этого потребуется «значение с плавающей запятой» (затем рисование или строка и т. Д.). Это где проблемы начинаются? Должен ли я каким-то образом преобразовывать строки в целые числа (или в числа с плавающей точкой?)? Я полагаю, что есть какое-то базовое правило, которое я игнорирую, поэтому я хотел бы понять, что здесь происходит и как с этим столкнуться. Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Решено: я использовал SharedPreferences, чтобы сохранить новые напечатанные данные как целые числа и извлекать их всякий раз, когда они мне нужны:

Настройка моих предпочтений:

SharedPreferences myPreferences;
savedData = getSharedPreferences("myStoredData", Context.MODE_PRIVATE);

Сохранение целого числа для дальнейшего использования:

SharedPreferences.Editor myEditor = savedData.edit();
myEditor.putInt("Label", int);
myEditor.apply();
myEditor.commit();

Получение и использование целого числа:

savedData.getInt("Label", Default);
0 голосов
/ 05 марта 2020

Как вы объяснили, вы не получаете текст TextView, это потому, что, возможно, вы написали его где-то, что вы не должны, т.е. предоставили кнопку, когда пользователь наберет текст и все будет готово, он нажмет кнопку, скажем, отправить и сделать это Код выше при нажатии кнопки.

...