找不到属性的设置者' android:onClick'在android.widget.RelativeLayout上使用参数类型lambda

时间:2017-12-15 07:30:51

标签: android

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
    <variable name="user"
        type="com.daimler.user.persistence.User"/>
    <variable name="callback"
        type="com.daimler.user.ui.UserClickCallback"/>
</data>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/selectableItemBackground"
    android:clickable="true"
    android:paddingBottom="@dimen/row_padding"
    android:paddingLeft="@dimen/activity_margin"
    android:paddingRight="@dimen/activity_margin"
    android:paddingTop="@dimen/row_padding"
    android:onClick="@{() -> callback.onUserClick(user)}">
public class UserClickCallback {

   public void onUserClick(User v) {

   }
}

我写了这样的代码,它看起来没问题,但它显示错误:

  

错误:(36,28)无法找到属性&#39; android:onClick&#39;   在android.widget.RelativeLayout上使用参数类型lambda。

有人帮忙吗?

3 个答案:

答案 0 :(得分:5)

我遇到了同样的问题。 我删除了“Rebuild Project”文件夹,然后点击了“public class Singleton { private static Singleton INSTANCE = null; private Singleton() { init(); } public static Singleton getInstance() { if (INSTANCE == null) { INSTANCE = new Singleton(); } return(INSTANCE); } private void init() { Log.d(TAG, "is this firing"); } } ”。

这对我有用。

答案 1 :(得分:2)

更改此行。希望这个帮助。

android:onClick="@{() -> callback.onUserClick(user)}">

android:onClick="@{(view) -> callback.onUserClick(user)}">

答案 2 :(得分:1)

我得到了答案。默认的绑定适配器不起作用所以我添加了app:onclick binding:

@BindingAdapter({"app:onClick"})
public static void setOnClick(View view, View.OnClickListener clickListener) {
    view.setOnClickListener(clickListener);
    view.setClickable(true);
}

然后我像这样更改了xml:

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:paddingBottom="@dimen/row_padding"
android:paddingLeft="@dimen/activity_margin"
android:paddingRight="@dimen/activity_margin"
android:paddingTop="@dimen/row_padding"
app:onClick="@{() -> callback.onUserClick(user)}">