- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 Glide 成功渲染图像后更新 TextView 时看到此错误。
Fatal Exception: java.lang.IllegalStateException: Required DataBindingComponent is null in class CustomBinding. A BindingAdapter in CustomViewModel is not static and requires an object to use, retrieved from the DataBindingComponent. If you don't use an inflation method taking a DataBindingComponent, use DataBindingUtil.setDefaultComponent or make all BindingAdapter methods static.
@BindingAdapter(value = { "android:src", "placeHolder" }, requireAll = false)
public void setUrl(ImageView imageView, String url, Drawable placeHolder) {
Glide.with(imageView.getContext())
.load(url)
.placeholder(placeHolder)
.centerCrop()
.listener(new Listener<String, Drawable>() {
@Override
public boolean onException() {
viewmodel.setTextVisible(true);// ERROR!
return false;
}
@Override public boolean onResourceReady() {
viewmodel.setTextVisible(false); // ERROR!
return false;
}
})
.into(imageView);
}
public void setTextVisible(boolean visibility) {
textVisibility = visibility;
notifyPropertyChanged(BR.textVisibility);
}
@Bindable
public boolean getTextVisible() {
return textVisibility;
}
这就是我如何初始化 View 模型并将数据绑定(bind)到 fragment 中:
CustomBinding binding =
DataBindingUtil.inflate(inflater, R.layout.custom, container,
false);
CustomViewModel viewModel = new CustomViewModel(data, context);
binding.setHandlers(new CustomHandlers(context));
binding.setData(viewModel);
我找不到在 View 模型中实际实现它的方法。预先感谢您的帮助。
最佳答案
遇到了同样的问题,通过向方法添加 @JvmStatic
注释得到解决,并且它有效。
应该是这样的
@BindingAdapter("app:someAttribute")
@JvmStatic
示例
class TestBindingHelper {
companion object{
@BindingAdapter("app:serviceOptions")
@JvmStatic
fun setServiceOptions(recyclerView: RecyclerView, listOfData: List<String>?) {
//do something funny
}
}
}
关于android - 使用 DataBindingComponent 膨胀方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45933481/
这个问题在这里已经有了答案: How do I access an instance variable inside a BindingAdapter when using Android Data
我正面临这种幻像错误。我已经尝试了很多方法来解决这个问题,但没有任何效果。我不知道是什么产生了这个问题。这是我在构建日志中的错误: e: /Users/galihlarasprakoso/Projec
将我的整个项目迁移到 android x 后,我无法再编译它了。 我收到 100 个以下错误: e: M:\tmp\EverywhereLauncher\app\generated\data_bind
我在 Glide 成功渲染图像后更新 TextView 时看到此错误。 Fatal Exception: java.lang.IllegalStateException: Required DataB
在我的 agent_details_activity.xml 中: Activity 中: class AgentDetailsActivity : AppCompatActivity() {
我正在尝试将 Dagger2 与 Kotlin 结合使用,但出现无法追踪的错误。我已经尝试了很多方法来解决这个问题,但都不起作用。这是我通过 ./gradlew build --stacktrace
编译我的应用程序时,我在所有生成的 WhatFragmentOrActivityBinding 类上都收到以下错误: error: cannot find symbol protected Wha
我在 android studio 中构建时遇到了这个错误: Error:Execution failed for task ':app:transformResourcesWithMergeJava
我下载了一个 Android 项目,但出现了这个错误: Error:(42, 42) error: cannot find symbol class DataBindingComponent 示例导入
我在官方 API 文档中看到了 DataBindingComponent。 https://developer.android.com/reference/android/databinding/Da
我有一个项目,我在 android studio 3.3 中使用 dagger 版本 2.18(实现“com.google.dagger:dagger:2.18”) Beta 1 但是当我运行它时,它
我已经尝试解决这个烦人的问题太久了,但没有任何进展。 我们的应用程序有大部分类是用 Kotlin 编写的,我们也在使用数据绑定(bind): apply plugin: "kotlin-kapt"
我刚刚在启用了 Kotlin 的 Android Studio 3.3 Canary 3 上创建了一个新项目。然后我还启用了数据绑定(bind),但我收到一条错误消息,提示找不到 DataBindin
我刚刚在启用 Kotlin 的 Android Studio 3.2 Canary 16 上创建了一个新项目。然后我也启用了数据绑定(bind),但是我收到一个错误,说它找不到 DataBinding
我是一名优秀的程序员,十分优秀!