Android从XML访问BR ID

时间:2018-01-29 22:27:46

标签: java android xml android-layout android-databinding

我试图在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,但我试图避免这种情况。

1 个答案:

答案 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"一样。