【问题标题】:Android Databinding for Custom View: 'cannot find symbol' and 'duplicate class found'自定义视图的 Android 数据绑定:“找不到符号”和“找到重复的类”
【发布时间】:2018-11-24 17:44:48
【问题描述】:

我之前在我的项目中更改了一些代码,现在在编译以下自动生成的类时出现以下错误:

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

对可能出现的问题有什么建议吗?

【问题讨论】:

  • 请您尝试删除构建文件夹然后清理构建吗?

标签: android android-databinding


【解决方案1】:

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

<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 天。 希望这对某人有所帮助。

【讨论】:

    【解决方案2】:

    您在哪里指定了 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多