今天很奇怪,用TextView.setText()这个看似简单的方法时居然也能报错:
lightData_C1.setText(lightData[1]);
android.content.res.Resources$NotFoundException: String resource ID #0x531
其中,lightData_C1是个TextView,lightData[1]是一个int[ ]数组的元素,准备展示在lightData_C1中,经测试,发现lightData_C1 和 lightData[1] 这两个都没问题,那为什么在setText()这个看似简单的方法上报错呢?
原来这是Android的一种方法重载问题:
TextView的这个setText()方法,其实有两个重载方法:
setText( String )
setText( int )
如果参数是个字符串,那就和我们想当然的一样,直接把字符串作为内容展示出来;但如果是数字,那系统就会去找以这个数字为ID的资源来往TextView里面填。
到这里,问题很清楚了,上面提示找不到ID为#0x531的资源,看来是调用了setText( int ) 这个方法,把我赋给它的内容理解成了一个资源id。
然后改写一下:
lightData_C1.setText(String.valueOf(lightData[1]));
把参数转换成字符串就OK了。