为什么此代码在Android中触发强制关闭?
`score.setText(Integer.parseInt((String) score.getText())+1);`
score
是一个TextView,我只是将数字增加1.我已经预定了一个String资源作为得分TextView中的初始数字。
我很沮丧。
答案 0 :(得分:3)
首先,你应该尝试分解你的代码,这样你才能真正看到它发生了什么。
而不是
score.setText(Integer.parseInt((String) score.getText())+1);
试
String tmp = score.getText().toString();
int score;
score = Integer.parseInt(tmp) + 1;
score.setText(String.valueOf(score));
编辑:在进一步读取documentation时,setText有几个重载,其中一个DOES采用int,但它采用资源ID的int。我的猜测是你的分数不是有效的资源ID,从而导致你的应用程序崩溃。
public final void setText (int resid)
哦,就开始Android Dev的频繁FC来说,它发生在我们最好的人身上。关键是要了解为什么FC会发生,并且有很多耐心。
答案 1 :(得分:0)
主要是你需要这样做
score.setText(Integer.parseInt(score.getText().toString())+1);
coz .. getText()返回一个无法解析为Integer的可编辑对象。所以它给出了NumberFormat异常。
并且确保最初将TextView,s Text设置为整数..
答案 2 :(得分:0)
TextEdit.setText
需要CharSequence
作为输入。
您通过Integer.parseInt((String) score.getText())+1
提供整数
如果将其转换回字符串并在setText帮助中使用它,请参阅。
您可以使用Integer.toString
将整数转换为字符串。
PS:我自己是java新手。 理想情况下,编译器应该捕获此错误。 java可能会使用从string到int的一些隐式类型转换。
答案 3 :(得分:0)
试试这种方式
score.setText(String.valueOf(Integer.parseInt(score.getText().toString())+1));
因为你可以传递整数值,这就是强迫应用程序
的原因