为什么会这样(请参见下面的两个代码示例)?

时间:2018-12-22 06:07:03

标签: java android android-studio

代码1:

public void displayQuantity(int number) {
    TextView quantityTV = (TextView) findViewById(R.id.quantity_tv);
    quantityTV.setText( " "+ number);
      }

代码2:

 public void displayQuantity(int number) {
            TextView quantityTV = (TextView) findViewById(R.id.quantity_tv);
            quantityTV.setText(number);
         }

为什么代码2给出错误而代码1没有给出? 黑白代码1和2中的“ __”有区别

4 个答案:

答案 0 :(得分:1)

根据documentation

代码1使用方法setText(CharSequence text)“设置要显示的文本”。

代码2使用方法setText(int resid),该方法“使用字符串资源标识符设置要显示的文本”。您的电话号码很可能不是有效的字符串资源标识符,这会给您带来错误。即使是这样,显示的字符串也与您要显示的数量无关。

答案 1 :(得分:0)

TextView中,您只能设置String(CharSequence)的值,而您的 number 数据类型在int中,如果您这样做,将不会显示任何错误:

          public void displayQuantity(int number) {
            TextView quantityTV = (TextView) findViewById(R.id.quantity_tv);
            quantityTV.setText(String.valueOf(number));
         }

答案 2 :(得分:0)

number是int类型,+运算符会自动将其转换为String。(“”为空String)

+ operator for String in Java

答案 3 :(得分:0)

尝试在代码2中使用number.toString() 因为您正在使用

中的int进行字符串连接