用于自定义视图的Android数据绑定:“找不到符号”和“找到重复的类”

时间:2018-11-24 17:44:49

标签: android android-databinding

我以前已经在项目中更改了一些代码,现在对于以下自动生成的类,在编译过程中会引发以下错误:

DataBinderMapperImpl.java :找不到符号“ AdvancedBoxBindingImpl”(在“ import ... databinding.AdvancedBoxBindingImpl;”行中)

AdvancedBox包含在布局 fragment_config.xml 中,如下所示:

<layout xmlns:bind="http://schemas.android.com/tools">
    <data>
        <import type="android.view.View"/>
        <variable name="viewModel" type ="...GlobalConfigViewModel"/>
    </data>
...
<....AdvancedBox
                android:id="@+id/advancedBox"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:viewModel = "@{viewModel}"
                android:visibility="@{viewModel.advancedShown ? View.VISIBLE : View.GONE}"/>
...
</layout>

advanced_box.xml 如下:

<layout>
    <data>
        <import type="android.view.View"/>
        <variable
            name="viewModel"
            type="...GlobalConfigViewModel" />
    </data>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    ....

AdvancedBox 类中的绑定是这样实例化的:

class AdvancedBox : LinearLayout{
    private lateinit var mBinding: AdvancedBoxBinding
    init{
        mBinding = AdvancedBoxBinding.inflate(inflater, this, true)
    }

所有这些以前都可行,但是我最近更新了Android Studio并在代码中进行了更改。

其他信息:

  • gradle.properties具有属性“ android.databinding.enableV2 = true”
  • 我尝试过File-> Invalidate Caches and Restart

关于可能是什么问题的任何建议?

2 个答案:

答案 0 :(得分:0)

您在哪里在xml中指定了绑定类?我认为这就是问题所在

<layout>
    <data class="AdvancedBoxBinding">
        <import type="android.view.View"/>
        <variable
            name="viewModel"
            type="...GlobalConfigViewModel" />
    </data>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

答案 1 :(得分:0)

数据绑定到视图的方式可能存在问题。 就我而言,我有一个模型:

<data>
    <variable name="user" type="zw.org.coop.models.User"/>
</data>

但是由于复制粘贴,我有一个错字:

<TextView
    android:id="@+id/fullName"
    style="@style/styleEditText"
    android:layout_width="match_parent"
    android:layout_height="35dp"
    android:padding="5dp"
    android:text="@{user.user.firstName}"
    android:textSize="12sp"
    tools:text="Dean Kaila" />

user.user.firstName 不在意,但 user.firstName

如果 Jetbrains 继续提供一些 intellisense 来解决此类问题会更​​好,但是,对我来说,这是2天的好时机。 希望这对某人有帮助。