Android往setText()方法直接传整数的异常

异常详情:

11-28 21:41:31.482 23416-23416/com.xxx.record E/AndroidRuntime: FATAL EXCEPTION: main
     Process: com.xxx.record, PID: 23416
     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.record/com.xxx.record.activity.RecordContentActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x42
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3782)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3961)
         at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
         at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
         at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
         at android.app.ActivityThread$H.handleMessage(Ac`在这里插入代码片`tivityThread.java:2386)
         at android.os.Handler.dispatchMessage(Handler.java:107)
         at android.os.Looper.loop(Looper.java:213)
         at android.app.ActivityThread.main(ActivityThread.java:8178)
         at java.lang.reflect.Method.invoke(Native Method)
         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
      Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x42
         at android.content.res.Resources.getText(Resources.java:413)
         at android.widget.TextView.setText(TextView.java:6427)
         at com.xxx.record.activity.RecordContentActivity.writeData(RecordContentActivity.java:102)
         at com.xxx.record.activity.RecordContentActivity.onCreate(RecordContentActivity.java:38)
         at android.app.Activity.performCreate(Activity.java:8086)
         at android.app.Activity.performCreate(Activity.java:8074)
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1313)
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3755)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3961) 
         at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) 
         at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) 
         at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386) 
         at android.os.Handler.dispatchMessage(Handler.java:107) 
         at android.os.Looper.loop(Looper.java:213) 
         at android.app.ActivityThread.main(ActivityThread.java:8178) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101) 

分析过程:
我直觉认为是从json转过来的对象没正确识别,就把获得的对象打印出来了。发现没有问题。

然后,继续检查异常堆栈提供的到具体代码的地址,RecordContentActivity.writeData(RecordContentActivity.java:102)
发现,这里就是简单的从对象实例获取值。

然后一排脑壳,发现这里直接传入的Integer 对象;

mTvRecord.setText(details.getRecord())

details.getRecord() 这个方法返回值是Integer 类型的。脑抽了,要么转String,要么前面加个字符串。

比如: 
mTvRecord.setText(String.valueOf(details.getRecord()))
或者
mTvRecord.setText(“”+details.getRecord())

简单记录一下,Java 中参数为String的不会直接把单纯的把其他封装类转换,要么用+号拼接,要么就自己转。比如上面就是没有转换导致的异常。

如次理解有误,请指出,谢谢指教,也希望多多讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值