分享

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

 gearss 2016-05-29
  忙活了一个下午才研究出来的。。。。


学习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()方法的时候出问题了

更改之前:

  1. txtresult.setText(resultnum);;  

更改之后:

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

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

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


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

完事。








    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多