Привязка данных Android для пользовательского просмотра: «не удается найти символ» и «найден повторяющийся класс» - PullRequest
0 голосов
/ 24 ноября 2018

Ранее я изменил некоторый код в своем проекте, и теперь во время компиляции возникает следующая ошибка:

DataBinderMapperImpl.java : не удается найти символ "AdvancedBoxBindingImpl "(в строке 'import ... databinding.AdvancedBoxBindingImpl;')

AdvancedBox включен в макет фрагмент_конфигурации.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 голосов
/ 01 января 2019

Возможная проблема с привязкой данных к представлению.В моем случае у меня была модель:

<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 дня для меня.Надеюсь, это кому-нибудь поможет.

0 голосов
/ 26 ноября 2018

где вы указали класс связывания внутри 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"
...