首页 > 解决方案 > android:onClickListener 未找到

问题描述

我正在阅读下一本书“探索 Android”0.7 版https://commonsware.com/AndExplore/

其 Android 示例项目使用 Data Binding 库

所以有一种布局,它包含行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我得到“未找到”错误?

标签: androidandroid-layoutandroid-xmlandroid-databindingandroid-jetpack

解决方案


你最后错过}了。应该

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

推荐阅读