TextView.setText(int) 导致应用崩溃。

5

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

private void display(int number) {
    TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
    quantityTextView.setText(number);
    ...
}

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

正如您所看到的,我只向 quantityTextView.setText(number) 方法传递了一个整数值。

运行应用程序时,一旦调用此方法,它就会崩溃。您能告诉我为什么会发生这样的事情吗?


请粘贴堆栈跟踪(错误文本)。 - Dev-iL
6个回答

9

是的,请使用 String.valueOf(),像这样:

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

3
因为 setText() 只接受 String 值或 Resource ID of a String (实际上是 int)。
请参考这里:setText() 方法 您可以使用 String.valueOf(number); 作为 setText() 的输入参数,或者使用 getResources().getString(R.string.number) 引用 XML 中的 String ID 作为输入值。

1
在将整数放入TextView之前,请将其转换为字符串:
quantityTextView.setText(Integer.toString(number));

或者简单地
quantityTextView.setText(number+"");

1
你的代码崩溃的原因是setText(int)需要资源ID。这个文档说明得不太清楚,所以你可能会认为你可以传递一个整数,然后TextView将其转换为文本。
你应该先将其转换为字符串,例如:
String.valueOf(number)

然后一切都会好起来。


0
原因是setText()只接受字符串或字符数组。
所以你可以进行类型转换,也可以在数字前添加引号。
(1). 通过类型转换 String.valueOf(number)
(2). 在数字前添加"" quantityTextView.setText(""+number); 或者 quantityTextView.setText(number+"");

0

TextView的setText()方法接受CharSequence类型,而不是整数。因此,在使用之前,您必须将数字转换为字符串。

尝试使用以下代码:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接