Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果使用通过转换器的双向数据绑定,则不会生成XML布局的绑定实现_Android_Xml_Android Layout_Android Databinding_Two Way Binding - Fatal编程技术网

Android 如果使用通过转换器的双向数据绑定,则不会生成XML布局的绑定实现

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

我的版面中有一个AppCompatAutoEditTextView。此视图是使用ArrayAdapter从名为FlavorType的枚举类填充的

现在,我想实现双向数据绑定,将text属性绑定到MutableLiveData。为此,我实现了以下转换器:

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
注释并重试。我尝试了此操作,但仍然出现相同的错误。