获取 TextView.getText() 的 NumberFormatException

Getting NumberFormatException for TextView.getText()

我是一个初学者,一直在拼命想了解如何实现以下目标:我有 3 个 TextView 在屏幕上以文本形式显示 3 个数值(始终为整数),例如:50、100、200。然后,在某些事件之后,我希望将这 3 个字符串作为值放入我的 PieEntries 中 在数组列表中。我不能只从 TextView 获取文本并将其作为条目的值,所以我尝试使用 Integer.parseInt 将字符串作为 Ints 读取(因为它们实际上由所有数字组成),或者 Integer.valueOf 但我只得到 java.lang.NumberFormatException:对于输入字符串:"First" 崩溃后出错。这就是我要说的部分:

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

我不会在此处粘贴整个代码,因为如果我手动输入值而不是尝试从 TextView 中解析整数,图表实际上可以正常工作。 另外:当我第一次开始输入 "new PieEntry" 时,提示清楚地表明它需要一个 "float value"(然后是一个可绘制对象或一个字符串等等)。这是麻烦开始的地方吗?我之前应该以某种方式将字符串转换为整数(或转换为浮点数吗?)?我想我忽略了一些基本的 Java 规则,所以我想了解这里发生的事情以及如何面对它。非常感谢!

正如你所解释的,你没有得到 TextView 文本,这是因为你可能把它写在了你不应该写的地方,即提供一个按钮,当用户输入并完成时,他会点击按钮说提交和在单击按钮时执行上述代码。

已解决:我使用 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);