【发布时间】:2017-01-14 20:15:54
【问题描述】:
我一直在开发一个带有数据绑定和 MVVM 的应用程序。
我正在尝试在横向模式下为我的应用使用替代布局。我有:
layout/fragment_content.xml
layout-land/fragment_content.xml
两种布局都有不同外观的相同视图,并从相同的视图模型获取提要,如下所示:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data class="MyBinding">
<variable
name="viewModel"
type="com.myapp.package.viewModel.VMFirst"/>
<variable
name="controlModel"
type="com.myapp.package.viewModel.VMSecond"/>
</data>
<DIFFERENT CONTENT HERE>
所有视图和 id 都存在于两种布局中。
好吧,问题是,它无法编译,错误只是 "cannot find symbol method getViewModel" 和另一个变量的 getter。
到目前为止我尝试了什么:
使用 layout 和 layout-land 文件夹(失败,错误在上面解释)
使用我在这里找到的布局别名 Use Layout Aliases Issue 199344: Data binding does not work with layout aliases。在尝试这种方法时,我没有更改 xml 文件中的任何内容。这也失败了,错误是
Could not write to com.myapp.package.databinding.MyBinding
不能在多个布局文件中使用数据绑定data标签吗?在使用数据绑定时,我应该使用什么来为不同的状态使用不同的布局?谢谢!
编辑:删除 class="MyBinding" 并没有改变错误。
【问题讨论】:
-
您可以发布您的
VMFirst或VMSecond课程吗? -
您找到解决方案了吗?我有完全相同的问题。我有一个标准布局文件和一个 sw720dp 文件,我得到了确切的问题。
-
您为什么不简单地创建第三个布局文件,例如
base_data_xyz,其中包含<data>但没有视图,然后在两个布局中都使用<include>。
标签: android android-layout android-studio android-databinding