以下内容假设读者对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

更多推荐