setText() 引起 android.content.res.Resources$NotFoundException

今天很奇怪,用TextView.setText()这个看似简单的方法时居然也能报错:

lightData_C1.setText(lightData[1]);

android.content.res.Resources$NotFoundException: String resource ID #0x531

说是没找到 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了。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹰信息技术服务部

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值