DataBinding 组件未转换为 Object

Posted

技术标签:

【中文标题】DataBinding 组件未转换为 Object【英文标题】:DataBinding Component is not converted into Object 【发布时间】:2019-11-10 03:07:56 【问题描述】:

我正在尝试使用 databinding 从视图模型中将 Cardviewvisibility 与基于条件的 boolean 绑定。

但我收到数据绑定错误

我尝试在 xml 本身内部使用数据绑定和处理 visibility。 我还尝试从片段中以编程方式处理visibility。 但是两个例子都失败了

<variable name="vm"
                  type="packageName.ui.viewmodels.DashHomeViewModel"/>

android:visibility="@vm.showQRCard == true ? View.VISIBLE : View.GONE"
val binder = DataBindingUtil
.inflate(inflater, R.layout.fragment_dash_home, container, false)
binder.vm = viewModel

我收到此错误消息。

错误:FragmentDashHomeBinding 类中的构造函数 FragmentDashHomeBinding 不能应用于给定类型; 超级(绑定组件,根,2 ^ 必需:Object,View,int,AppBarLayout,LinearLayout,LinearLayout,ImageView,SwipeRefreshLayout,Toolbar,CircleImageView,TextView,TextView,TextView,FrameLayout,FrameLayout,FrameLayout,FrameLayout 找到:DataBindingComponent,View,int,AppBarLayout,LinearLayout,LinearLayout,ImageView,ImageView,SwipeRefreshLayout,Toolbar,CircleImageView,TextView,TextView,TextView,TextView,FrameLayout,FrameLayout,FrameLayout,FrameLayout 原因:实际参数列表和形式参数列表的长度不同

我从错误中了解到的是 Object 是预期的,但 DataBindingComponent 已通过,但 DataBindingComponent 会自动转换为 object 在这种情况下不会发生。 我不知道这背后的原因。

在这种特定情况下发生这种情况只是因为其他片段中用于可见性的类似代码运行良好。

【问题讨论】:

【参考方案1】:

我不知道为什么,但是当我今天尝试运行我的代码时,它运行良好。 我昨天尝试了干净的代码并使缓存无效并重新启动,但它没有工作。

【讨论】:

以上是关于DataBinding 组件未转换为 Object的主要内容,如果未能解决你的问题,请参考以下文章

mongoose CastError:在路径“apps”处为值“[object Object]”转换为未定义失败

mongoose.js CastError:在路径“未定义”处为值“[object Object]”转换为数字失败

Android JetPack组件之DataBinding的使用详解

Android 使用DataBinding时 将布局页面转换为数据绑定布局(Convert to data binding layout) 不出现提示解决办法

BootstrapVue 组件未转换为 HTML

Fragments RecyclerView Databinding Kotlin - 未解析的引用变量名称