异常详情:
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的不会直接把单纯的把其他封装类转换,要么用+号拼接,要么就自己转。比如上面就是没有转换导致的异常。
如次理解有误,请指出,谢谢指教,也希望多多讨论!