【发布时间】:2019-03-24 17:27:36
【问题描述】:
我正在尝试为 <include>d 布局设置 OnClickListener,但在编译时收到数据绑定错误,指出数据绑定“找不到参数类型为 android 的属性 'android:onClick' 的设置器.view.View.OnClickListener”。
这里的上下文是我正在使用数据绑定来扩展包含的布局,以便我可以将值从我绑定到包含布局的 viewModel 传递到其中。
我尝试了数据绑定表达式的各种语法:
@{viewModel::onClickFunction}@{viewModel.onClickFunction}@{() -> viewModel.onClickFunction()}@{(view) -> viewModel.onClickFunction()}@{_ -> viewModel.onClickFunction()}
我已经用onClickFunction 作为函数和OnClickListener 对象尝试了以上所有方法。
有关 Stack Overflow 的其他相关问题似乎通过清理项目以重新生成数据绑定文件来解决此问题,但这对我不起作用。
相关代码sn-ps如下:
视图模型
class MyViewModel() {
val onClickFunctionAsAListener: OnClickListener = object:OnClickListener{
override fun onClick(v: View?) {
//Do something
}
}
fun onClickFunction() {
//Do something
}
}
包括布局
<layout>
<data>
<variable name="viewModel" type="full.package.name.MyViewModel"/>
</data>
<LinearLayout>
<include
layout="@layout/included_layout"
android:onClick="@{viewModel.onClickListener}"
app:customAttribute="@{`someText`}/>
</LinearLayout>
</layout>
包含的布局
<layout>
<data>
<variable name="customAttribute" type="String"/>
</data>
<TextView
layout="@layout/included_layout"
android:text="@{customAttribute}"/>
</layout>
【问题讨论】:
标签: android kotlin android-databinding