android:onClickListener 未找到

android:onClickListener not found

我正在看下一本书"Exploring Android"版本0.7https://commonsware.com/AndExplore/

及其 Android 示例项目使用数据绑定库

所以只有一种布局,它包含行 android:onClickListener="@{(v) -> holder.onRowClick.invoke(model)}">:

 <androidx.constraintlayout.widget.ConstraintLayout
        android:onClickListener="@{(v) -> holder.onRowClick.invoke(model)"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

但它不会编译。

* What went wrong:
Execution failed for task ':app:processDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Android resource linking failed
     res\layout\todo_row.xml:13: AAPT: error: attribute android:onClickListener not found.

但有些这样的听众是有效的,例如android:onCheckedChanged,尽管 Android Studio 显示警告:

我不太喜欢这一切(lambdas,xml 中的函数)但似乎 Android 允许其中的一些并且它可以用于编写基于 MVVM 的应用程序

那么为什么 android:onCheckedChanged 工作并且 android:onClickListener 我得到 "not found" 错误?

你应该尝试 android:onClick="@{(v) -> holder.onRowClick.invoke(model)" 而不是 android:onClickListener="@{(v) -> holder.onRowClick.invoke(model)"

你最终错过了 }。 应该是

 android:onClickListener="@{(v) -> holder.onRowClick.invoke(model)}"