记一次Android解决使用databinding时,Activity/Fragment中无法使用binding引用include标签下的组件问题

本文详细解释了在Android DataBinding中,`include`标签的`id`属性应如何正确设置,以确保与`layout`属性关联的布局文件名称相匹配。错误示例展示了当`id`名称不包含在`layout`文件名中时可能出现的问题,而正确示例则演示了如何避免这种问题,使得在Activity或Fragment中能够正确引用`include`内的组件。博客还提及了一个没有使用`id`的`include`官方用例。

以下内容假设读者对Android databinding已经有了一定的基础使用了解(databinding官方教程)。

正文:

产生此问题的原因是布局文件中的include标签定义的id属性名称没有包含在跟其对应的layout属性关联的布局文件名称中【id和布局名称可以相同】,如下用例所示:

1)错误样例:

<include
            android:id="@+id/in_slave"
            layout="@layout/activity_fellow"
            app:mvm="@{mvm}" />

问题原因:这里的id名称in_slave没有包含在layout文件名称activity_fellow中;

2)正确使用样例(可以正常在activity/fragment中通过binding引用):

<include
            android:id="@+id/in_master"
            layout="@layout/fragment_main_master_new" />

in_master包含在fragment_main_master_new中。

在activity/fragment中的使用:binding.inMaster.[fragment_main_master_new布局文件中的组件id名称],这里引用的id名称都是驼峰写法。

3)没有使用id的include官方用例

参考Stack Overflow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值