为什么这会在Android上触发强制关闭?

时间:2011-11-17 04:44:38

标签: android

为什么此代码在Android中触发强制关闭?

`score.setText(Integer.parseInt((String) score.getText())+1);`

score是一个TextView,我只是将数字增加1.我已经预定了一个String资源作为得分TextView中的初始数字。

我很沮丧。

4 个答案:

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

因为你可以传递整数值,这就是强迫应用程序

的原因