Jor*_*gen 63 data-binding android
我正在尝试新的数据绑定库.我有一个奇怪的问题,绑定visibility
属性不编译.
这是xml文件的简化版本:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="header"
type="com.example.EmailHeader" />
</data>
<RelativeLayout ... >
<TextView
...
android:text="@{header.senderName ?? header.senderAddress}"
android:visibility="@{header.hasAttachment ? View.VISIBLE : View.INVISIBLE}" />
</RelativeLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
编译时我得到以下消息:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
Run Code Online (Sandbox Code Playgroud)
java.lang.RuntimeException:发现数据绑定错误.****/数据绑定错误****消息:标识符必须具有XML文件中的用户定义类型.视图缺少它
当我删除android:visiblity
声明时,一切都编译(并且有效!)
我不知道我在这里缺少什么
bwh*_*ite 169
在数据标记内部,您还需要添加:
<import type="android.view.View" />
Run Code Online (Sandbox Code Playgroud)
ojo*_*ifu 31
尽管添加<import type="android.view.View" />
到我的数据标记,问题仍然存在.最后发现错误是由我的变量名称和我的POJO类的对象不匹配引起的.
这是我的数据标签:
<data>
<import type="android.view.View" />
<variable
name="employee"
type="com.example.Employee"/>
</data>
Run Code Online (Sandbox Code Playgroud)
而我正在使用:
<TextView
...
android:text="@{user.lastName}" />
Run Code Online (Sandbox Code Playgroud)
代替:
<TextView
...
android:text="@{employee.lastName}" />
Run Code Online (Sandbox Code Playgroud)
从文档中复制代码后忘记更改它.注意这样的错误,这些错误很难检测到DataBinding的新手
我遇到了由POJO对象在库项目中引起的完全相同的错误.
只需更新库的build.gradle即可启用数据绑定以及主项目:
dataBinding {
enabled = true
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23245 次 |
最近记录: |