关于java:TextView.setText(int)导致应用崩溃

TextView.setText(int) causes app to crash

我在Android Studio中实现以下Java代码:

1
2
3
4
5
private void display(int number) {
    TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
    quantityTextView.setText(number);
    ...
}

这是较大应用程序的一部分。

如您所见,我仅将整数值传递给quantityTextView.setText(number)方法。

运行该应用程序时,该方法一被调用便崩溃。 你能告诉我为什么发生这种事吗?


是的,使用String.valueOf(),如下所示:

1
2
3
4
private void display(int number) {
    TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
    quantityTextView.setText(String.valueOf(number));
}


因为setText()仅接受String的字符串值或资源ID(实际上是int)。

在这里检查:setText()方法

您可以将String.valueOf(number);用作setText()的输入参数,也可以使用getResources().getString(R.string.number)作为输入值引用XML中的字符串ID。


您的代码崩溃的原因是setText(int)需要一个资源ID。它的文档记录不是很好,因此您可以考虑将其传递给整数并将TextView转换为文本,这是可以原谅的。

您应该首先将其转换为字符串,例如:

1
String.valueOf(number)

然后一切都会好的。


将整数转换为字符串,然后将其放入TextView中:

1
quantityTextView.setText(Integer.toString(number));

或简单地

1
quantityTextView.setText(number+"");

原因是,setText()仅需要string或char []。

因此,您可以执行类型转换或添加带数字的引号

(1)。按类型铸造
String.valueOf(数字)

(2)。通过在数字上加上"
QuantityTextView.setText(" + number);
要么
QuantityTextView.setText(number +");


TextView的setText()方法接受CharSequence,而不是整数。因此,您必须先将数字转换为String。

尝试使用此:

1
quantityTextView.setText(Integer.toString(x));