安卓DataBinding报错:android.content.res.Resources$NotFoundException: String resource ID #0x1
发布日期:2021-06-29 18:33:23 浏览次数:2 分类:技术文章

本文共 1347 字,大约阅读时间需要 4 分钟。

报错信息

E/AndroidRuntime: FATAL EXCEPTION: main    Process: com.cxyzy.demo, PID: 4520    android.content.res.Resources$NotFoundException: String resource ID #0x1        at android.content.res.Resources.getText(Resources.java:410)        at android.content.res.HwResources.getText(HwResources.java:465)        at android.widget.TextView.setText(TextView.java:5589)        at com.cxyzy.demo.databinding.ItemUserBindingImpl.executeBindings(ItemUserBindingImpl.java:129)        at androidx.databinding.ViewDataBinding.executeBindingsInternal(ViewDataBinding.java:448)        at androidx.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:420)        at com.cxyzy.demo.UserAdapter$ViewHolder.bind(UserAdapter.kt:40)        at com.cxyzy.demo.UserAdapter.onBindViewHolder(UserAdapter.kt:16)        at com.cxyzy.demo.UserAdapter.onBindViewHolder(UserAdapter.kt:12)

分析

1)根据报错代码行打开报错代码(这个代码时dataBinding自动生成的)

com.cxyzy.demo.databinding.ItemUserBindingImpl.executeBindings(ItemUserBindingImpl.java:129)
2)较为明显,userId是int类型,但是直接被setText当作入参了。
3)对应xml文件(存在:android:text="@{user.id}"),此为问题症结。

解决方案

1)修改android:text="@{user.id}"android:text="@{Integer.toString(user.id)}"

这样对应的binding代码为:
2)修改android:text="@{user.id}"android:text='@{user.id+""}'
这样对应的binding代码为:

经验总结

在xml中使用变量赋值text时,需要保证类型是字符串类型。

附录

参考资料:

安卓开发技术分享:

更多技术总结好文,请关注:「程序园中猿」

转载地址:https://cxyxy.blog.csdn.net/article/details/88239631 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:chrome插件下载github指定文件夹
下一篇:Rejecting re-init on previously-failed class java.lang.Class androidx.core.view.ViewCompat

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月28日 07时59分08秒