在使用DataBinding的开发过程中遇到了这一问题,记录一下
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.apptutti.room, PID: 18469
android.content.res.Resources$NotFoundException: String resource ID #0x14
at android.content.res.Resources.getText(Resources.java:490)
at android.widget.TextView.setText(TextView.java:6504)
at com.apptutti.room.databinding.ItemBindingImpl.executeBindings(ItemBindingImpl.java:131)
at androidx.databinding.ViewDataBinding.executeBindingsInternal(ViewDataBinding.java:512)
at androidx.databinding.ViewDataBinding.executePendingBindings(ViewDataBinding.java:484)
at androidx.databinding.ViewDataBinding$7.run(ViewDataBinding.java:218)
at androidx.databinding.ViewDataBinding$8.doFrame(ViewDataBinding.java:320)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1029)
at android.view.Choreographer.doCallbacks(Choreographer.java:849)
at android.view.Choreographer.doFrame(Choreographer.java:775)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1016)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:257)
at android.app.ActivityThread.main(ActivityThread.java:8215)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:626)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1031)
这个问题是使用DataBinding的variable对XML文件引用非String类型数据引起的,我们只需要在使用非String类型的地方使用String.valueOf()方法将类型转换为String即可
android:text="@{String.valueOf(student.id)}"