Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取TextView.getText()的NumberFormatException_Java_Android_Android Studio_Pie Chart_Mpandroidchart - Fatal编程技术网

Java 获取TextView.getText()的NumberFormatException

Java 获取TextView.getText()的NumberFormatException,java,android,android-studio,pie-chart,mpandroidchart,Java,Android,Android Studio,Pie Chart,Mpandroidchart,我是一个初学者,一直在拼命尝试理解如何实现以下目标:我有3个文本视图,在屏幕上以文本形式显示3个数值(总是整数),例如:50、100、200。然后,在某个事件之后,我希望将这3个字符串作为值放入我的项目中 在ArrayList中。我不能仅仅从TextView中获取文本并将其作为条目的值,因此我尝试使用Integer.parseInt将字符串作为int(因为它们实际上由所有数字组成)或Integer.valueOf读取,但我只得到java.lang.NumberFormatException:对于

我是一个初学者,一直在拼命尝试理解如何实现以下目标:我有3个文本视图,在屏幕上以文本形式显示3个数值(总是整数),例如:50、100、200。然后,在某个事件之后,我希望将这3个字符串作为值放入我的项目中 在ArrayList中。我不能仅仅从TextView中获取文本并将其作为条目的值,因此我尝试使用Integer.parseInt将字符串作为int(因为它们实际上由所有数字组成)或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;
    }
ArrayList myData(){
ArrayList myArray=新的ArrayList();
add(新的PieEntry(Integer.parseInt(TextView1.getText().toString()),“First”);
add(新的PieEntry(Integer.parseInt(TextView2.getText().toString()),“Second”);
add(新的PieEntry(Integer.parseInt(TextView3.getText().toString()),“Third”);
返回图形值;
}
我不会在这里粘贴整个代码,因为如果我手动输入值,而不是试图解析文本视图中的整数,那么图形实际上可以正常工作。
另外:当我第一次开始键入“new PieEntry”时,提示清楚地表明它需要一个“float值”(然后是一个drawable或字符串等等)。麻烦是从这里开始的吗?我应该在以前以某种方式将字符串转换为整数(或浮点数?)吗?我想我忽略了一些基本的Java规则,所以我想了解这里发生了什么,以及如何面对这些。非常感谢

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

已解决:我使用SharedReferences将新类型的数据存储为整数,并在需要时检索它们:

设置我的首选项:

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

我建议您添加一个打印语句,以检查TextView中至少一个的值。类似于System.out.println(“myData:TextView1=“+TextView1.getText().toString()+”);通过这种方式,您可以检查字符串是否与您认为的完全一致。好吧,问题是:默认情况下,我给了我的三个TextView“android:text=”First“、”Second“、”Third”作为开头。然后,通过用户在EditText中输入(每个TextView一个)并按下按钮,键入的值(需要整数!)替换“First”、“Second”和“第三”标签。当我尝试按照您的建议打印字符串时,我会返回我给TextView的初始文本(如“First”),而不是用户编写的数字,即使我尝试在用户使用其键入的数字成功更改TextView时打印该文本。我做错了什么?谢谢你,但是,我已经明白了,我还没有找到解决办法