当前文章: 首页 >> 编程开发 >> JAVA >> Cannot find a setter for that accepts parameter type xx
聚划算
«   2020年2月   »
12
3456789
10111213141516
17181920212223
242526272829
网站分类
    海外云服务器CPS_轻量拓展全民云计算企业云服务器云盾证书
标签列表
最近发表

Cannot find a setter for that accepts parameter type xx

在学习Android数据绑定ImageView开发时,出现类似以下错误:

Cannot find a setter for <android.widget.ImageView android:srcCompat> that accepts parameter type 'androidx.lifecycle.MutableLiveData<android.graphics.drawable.Drawable>'
If a binding adapter provides the setter, check that the adapter is annotated correctly and that the parameter type matches.


我在model如下定义(BaseApplication是自定义类,主要用于全局获取Context):

public MutableLiveData<Drawable> state = new MutableLiveData<>(BaseApplication.getContext().getResources().getDrawable(android.R.drawable.ic_menu_help));


layout文件ImageView部分如下:

<ImageView
    android:id="@+id/state"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="17dp"
    android:layout_marginEnd="6dp"
    android:layout_marginRight="6dp"
    android:layout_marginBottom="17dp"
    android:srcCompat="@{model.state}"
    app:layout_constraintBottom_toTopOf="@+id/progress"
    app:layout_constraintEnd_toStartOf="@+id/checkBox"
    app:layout_constraintTop_toTopOf="@+id/name"
    tools:srcCompat="@android:drawable/ic_menu_help" />


解决方法(更改layout的xml文件就可以):

把srcCompat更改为background

<ImageView
    android:id="@+id/state"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="17dp"
    android:layout_marginEnd="6dp"
    android:layout_marginRight="6dp"
    android:layout_marginBottom="17dp"
    android:background="@{model.state}"
    app:layout_constraintBottom_toTopOf="@+id/progress"
    app:layout_constraintEnd_toStartOf="@+id/checkBox"
    app:layout_constraintTop_toTopOf="@+id/name"
    tools:background="@android:drawable/ic_menu_help" />


声明:本站原创文章,转载、复制、使用等请注明出处。
标题Cannot find a setter for that accepts parameter type xx
作者jues
地址: http://blog.jues.org.cn/post/cannot-find-a-setter-for-that-accepts-parameter-type-xx.html
1楼
  • jues 2020-01-15 18:11:36  回复
  • 当然build.gradle会在dependencies中自动添加以下内容:
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'

发表评论:

Powered By Z-BlogPHP 1.5.2 Zero Powered By Z-BlogPHP © 2018 jues博客 Copyright Your WebSite.Some Rights Reserved.联系站长 Themes by jues