我试图在xml布局文件中访问BR ID,我试图将BR包含在这样的布局中(当我把点后面的点显示正确的值时自动完成)
<layout>
<data>
<import type="com.android.databinding.library.baseAdapters.BR"/>
</data>
...
<Button app:custom_int_attribute="@{BR.some_id}"/>
...
</layout>
当我尝试制作项目时,我得到了这个错误,这告诉我BR类是在编译布局后创建的(这对我来说没什么意义):
错误:任务&#39;:app:compileDebugJavaWithJavac&#39;执行失败。 android.databinding.tool.util.LoggedErrorException:发现数据绑定错误。 **** /数据绑定错误****消息:无法解析BR文件的类型:F:\ pdt-client-android \ app \ src \ main \ res \ layout \ activity_login.xml loc:36:50 - 36 :51 **** \数据绑定错误****
我知道我可以在布局中创建int变量并从活动中为它分配id,但我试图避免这种情况。
答案 0 :(得分:0)
这完全正确。 BR
字段是资源中值的代码生成的强类型版本。要访问资源文件中的资源,您不需要参考Java类。在您的示例中,您将执行以下操作:
<Button app:custom_int_attribute="@some_id"/>
有了这个说法,如果你的例子中没有前缀,那就很不寻常了。如果您在布局中引用视图,则Java中可能为BR.id.some_id
,xml中可能为"@+id/some_id"
。从您分配给整数属性的用例,我假设您已将values文件夹中的id.xml
文件中的id定义为类型id
,或者将integers.xml中的id定义为类型{{ 1}}。在这种情况下,您可以这样访问:integer
或"@id/some_id"
,就像您"@integer/some_id"
或"@string/XXX"
一样。