Android 如果使用通过转换器的双向数据绑定,则不会生成XML布局的绑定实现
我的版面中有一个AppCompatAutoEditTextView。此视图是使用ArrayAdapter从名为FlavorType的枚举类填充的 现在,我想实现双向数据绑定,将text属性绑定到MutableLiveData。为此,我实现了以下转换器:Android 如果使用通过转换器的双向数据绑定,则不会生成XML布局的绑定实现,android,xml,android-layout,android-databinding,two-way-binding,Android,Xml,Android Layout,Android Databinding,Two Way Binding,我的版面中有一个AppCompatAutoEditTextView。此视图是使用ArrayAdapter从名为FlavorType的枚举类填充的 现在,我想实现双向数据绑定,将text属性绑定到MutableLiveData。为此,我实现了以下转换器: object Converter { @InverseMethod(value = "flavor_str_to_enum") fun flavor_enum_to_str(view: AppCompatAutoCompleteT
object Converter {
@InverseMethod(value = "flavor_str_to_enum")
fun flavor_enum_to_str(view: AppCompatAutoCompleteTextView, value: FlavorType): String {
return when (value) {
FlavorType.SWEET -> view.context.getString(R.string.label_flavor_sweet)
FlavorType.SAVORY -> view.context.getString(R.string.label_flavor_savory)
FlavorType.NONE -> view.context.getString(R.string.label_none)
else -> view.context.getString(R.string.label_none)
}
}
fun flavor_str_to_enum(view: AppCompatAutoCompleteTextView, value: String): FlavorType {
return when (value) {
view.context.getString(R.string.label_flavor_sweet) -> FlavorType.SWEET
view.context.getString(R.string.label_flavor_savory) -> FlavorType.SAVORY
view.context.getString(R.string.label_none) -> FlavorType.NONE
else -> FlavorType.NONE
}
}
}
在此之后,我在视图的XML中添加了以下行:
android:text="@={Converter.INSTANCE.flavor_enum_to_str(viewmodel.flavor)}
其中,flavor的类型为MutableLiveData。此外,我还在XML的顶部为我的转换器类添加了导入标记
现在,由于某种我不知道的原因,仅通过在xml中添加上述行,我的构建就开始失败,出现了一个找不到符号错误,即找不到与我的xml关联的BindingImpl。我查看了生成的代码文件夹,是的,我的xml的片段…BindingImpl不在那里,而其他布局则在那里。只要删除上面的代码行,一切就可以重新开始工作。我已经尝试了一切,无效,重新启动等,但这个问题似乎仍然存在
任何人都能提供关于可能发生的事情或我可能做错的事情的见解吗
编辑:
使用--stacktrace运行gradle build时,出现以下错误:
[databinding] {"msg":"cannot find method flavor_enum_to_str(dev.example.myapp.model.FlavorType) in class dev.example.myapp.utils.Converter","file":"app\\src\\main\\res\\layout\\fragment_addrecipe.xml","pos":[{"line0":119,"col0":41,"line1":119,"col1":86}]}
这让我相信它试图查找上述函数签名,但它发现:
flavor_enum_to_str(AppCompatAutoCompleteTextView, FlavorType)
我遵循文档并按照它描述的方式实现了一些事情 请添加
@JvmStatic
注释并重试。我尝试了此操作,但仍然出现相同的错误。请添加@JvmStatic
注释并重试。我尝试了此操作,但仍然出现相同的错误。