Android中TextView的SetText()方法注意事项

忙活了一个下午才研究出来的。。。。


学习Android的Intent时候跟着Mars老师做简单的乘法程序,在第一个activity输入两个正整数,通过一个intent跳转到第二个intent,在第二个activity中使用一个TextView的setText()方法显示乘法计算的结果,很简单是吧。


run as android application之后,第一个activity没有问题,可是一旦点击了计算的button,立马崩溃(unfortunately,...has stopped!)


DDMS里面报错:

08-27 06:16:08.517: W/EGL_genymotion(1239): eglSurfaceAttrib not implemented


谷歌查了下,主要是Androidmanifest里面没有注册或者是genymotion自身的问题,有人说使用自带模拟器,勾选use host gpu就可以,试之,继续错误。无奈掏出平板调试,继续错。。。。。基本上一个下午就在找这个错误,时间都浪费了。


这个时候突然在DDMS里面看到一段话:

No package identifier when getting value for resource number 0x00000002

终于给我查到了,Android异常

原来第二个activity里面的TextView在调用setText()方法的时候出问题了

更改之前:

txtresult.setText(resultnum);;

更改之后:

txtresult.setText(String.valueOf(resultnum));;

原理我直接照搬别人的了:

主要原因是TextView的setText方法把传入的int类型的percent当做资源Id到项目中查询资源,而资源中却找不到相应的数值,就会报NotFoundException的错误。
在Android中利用id来索引资源的地方很多(如:Toast.makeText()等),所以如果不小心往方法中传入int类型的参数,虽然编译时IDE不会报错,但是运行时,很容易因找不到对应的资源而报错。


解决办法:
所以如果要在TextView中显示int类型的数据,应提前转换成字符串类型。如:

完事。








评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值