web-dev-qa-db-fra.com

e: [kapt] Une exception s'est produite: Android.databinding.tool.util.LoggedErrorException: erreurs de liaison de données trouvées

J'ai activé la liaison de données, mais pendant que j'exécute le code, j'obtiens cette erreur.

erreur

e: [kapt] Une exception s'est produite: Android.databinding.tool.util.LoggedErrorException: erreurs de liaison de données trouvées.

J'ai créé une classe de fragments et XML pour cette classe. Im capable d'importer la classe datbindingutil.

J'ai fait reconstruire/synchroniser avec les fichiers gradle/invalider le cache et redémarrer, rien n'a fonctionné.

xml

<layout>

<!--suppress AndroidUnknownAttribute -->
<data class=".databinding.ProfileFragmentBinding">

    <variable
        name="user"
        type="com.sample.sample.user.User" />

    <variable
        name="vm"
        type="com.sample.sample.user.UserViewModel" />

    <variable
        name="handler"
        type="com.sample.sample.user.profile.ProfileFragment" />
</data>


<androidx.constraintlayout.widget.ConstraintLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <de.hdodenhof.circleimageview.CircleImageView
        Android:id="@+id/profileIV"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginStart="@dimen/medium"
        Android:layout_marginTop="@dimen/medium"
        Android:contentDescription="@null"
        Android:src="@mipmap/ic_launcher_round"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:url="@{user.avatarUrl}" />

    <LinearLayout
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:gravity="center"
        Android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="@+id/profileIV"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="@+id/profileIV">

        <TextView
            Android:id="@+id/profileNameLabel"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:fontFamily="@font/myriad_pro_semibold"
            Android:text="@{user.name}"
            Android:textColor="@color/black_transparent_de"
            Android:textSize="@dimen/text_regular"
            tools:text="NAME" />

        <TextView
            Android:id="@+id/badgeLabel"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="5dp"
            Android:fontFamily="@font/myriad_pro_semibold"
            Android:text="@{user.badge}"
            Android:textColor="@color/grey_000000"
            Android:textSize="@dimen/text_regular"
            tools:text="Superman" />

        <TextView
            Android:id="@+id/profile_Label"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="5dp"
            Android:fontFamily="@font/roboto_bold"
            Android:text="@{user.badge}"
            Android:textColor="@color/green_39b54a"
            Android:textSize="@dimen/text_small"
            tools:text="farmer_v1" />

    </LinearLayout>

    <ImageView
        Android:id="@+id/badgeIV"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginEnd="@dimen/medium"
        Android:layout_marginTop="@dimen/medium"
        Android:contentDescription="@null"
        Android:src="@mipmap/ic_launcher"
        app:error="@{@drawable/ic_profile_default_grey_24dp}"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:placeholder="@{@drawable/ic_profile_default_grey_24dp}"
        app:url="@{user.badgeUrl}" />

    <ImageView
        Android:id="@+id/locationPinIV"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginTop="@dimen/medium"
        Android:contentDescription="@null"
        Android:src="@drawable/ic_location_pin"
        app:layout_constraintStart_toStartOf="@+id/profileIV"
        app:layout_constraintTop_toBottomOf="@+id/profileIV" />

    <TextView
        Android:id="@+id/profileAddressTV"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginStart="@dimen/narrow"
        Android:fontFamily="@font/roboto"
        Android:textColor="@color/grey_000000"
        app:layout_constraintBottom_toBottomOf="@+id/locationPinIV"
        app:layout_constraintLeft_toRightOf="@+id/locationPinIV"
        app:layout_constraintTop_toTopOf="@+id/locationPinIV"
        tools:text="bangalore, Karnataka" />

    <ImageView
        Android:id="@+id/dobIV"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginStart="@dimen/standard"
        Android:layout_marginTop="@dimen/medium"
        Android:contentDescription="@null"
        Android:src="@drawable/ic_dob"
        app:layout_constraintLeft_toRightOf="@+id/profileAddressTV"
        app:layout_constraintTop_toBottomOf="@+id/profileIV" />

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginStart="@dimen/narrow"
        Android:fontFamily="@font/roboto"
        Android:textColor="@color/grey_000000"
        app:layout_constraintBottom_toBottomOf="@+id/locationPinIV"
        app:layout_constraintLeft_toRightOf="@+id/dobIV"
        app:layout_constraintTop_toTopOf="@+id/locationPinIV"
        tools:text="born on 01/01/2000" />

    <TextView
        Android:id="@+id/activityLabel"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginTop="@dimen/big"
        Android:fontFamily="@font/myriad_pro_semibold"
        Android:text="@string/activities"
        Android:textColor="@color/black_transparent_de"
        Android:textSize="@dimen/text_regular"
        app:layout_constraintStart_toStartOf="@+id/profileIV"
        app:layout_constraintTop_toBottomOf="@+id/locationPinIV" />

    <View
        Android:id="@+id/dividerV"
        Android:layout_width="match_parent"
        Android:layout_height="1dp"
        Android:layout_marginEnd="@dimen/small"
        Android:layout_marginStart="@dimen/small"
        Android:layout_marginTop="@dimen/regular"
        Android:background="@color/grey_000000"
        app:layout_constraintTop_toBottomOf="@+id/activityLabel" />

    <RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        app:layout_constraintTop_toBottomOf="@+id/dividerV">

        <!--<com.google.Android.material.tabs.TabLayout
            Android:id="@+id/tablayout"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            app:pager="@{(pager)}"
            app:tabGravity="fill"
            app:tabIndicatorColor="@color/black"
            app:tabMode="fixed"
            app:tabSelectedTextColor="@color/black"
            app:tabTextAppearance="@style/CustomTextTab"
            app:tabTextColor="#b4ffffff" />

        <androidx.viewpager.widget.ViewPager
            Android:id="@+id/viewpager"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_below="@+id/tablayout"
            app:handler="@{handler}"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />-->

    </RelativeLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

classe

    class ProfileFragment : Fragment() {
    @Inject
    lateinit var mFactory: ViewModelProvider.Factory
    private lateinit var mBinding: ProfileFragmentBinding

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_profile, container, false);
        return mBinding.root
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        val vm: UserViewModel = getViewModel(mFactory)
        mBinding.vm = vm
        //mBinding.handler = this
        //mBinding.setLifecycleOwner(this)
    }

    /*@BindingAdapter("bind:handler")
    fun bindViewPagerAdapter(view: ViewPager, activity: MainActivity) {
        val adapter = ProfilePagerAdapter(view.context, activity.supportFragmentManager)
        view.adapter = adapter
    }

    @BindingAdapter("bind:pager")
    fun bindViewPagerTabs(view: TabLayout, pagerView: ViewPager) {
        view.setupWithViewPager(pagerView, true)
    }*/
}
11
wasim

dans mon cas, j'ai pu le trouver lorsque la souris survolait cette ligne dans la sortie de génération, comme indiqué ici:

sans survol: enter image description here

avec survol: enter image description here

c'est vraiment dommage de voir comment ils montrent l'erreur, pour l'erreur la plus simple de tous les temps, j'essayais 10 solutions différentes aussi bien invalider le cache et ...

[~ # ~] mise à jour [~ # ~] :

vous pouvez également cliquer ici:

enter image description here

et vous obtiendrez quelque chose comme ceci:

enter image description here

qui est une information très détaillée sur l'erreur, il me manquait ce bouton en 7 ans de Android Développement: D

15
Amin Keshavarzian

Généralement, cette erreur se produit lorsque le nom de la variable passée dans le fichier XML via la liaison de données est incorrect. Passez simplement la souris sur l'erreur et vous pourrez y identifier la variable coupable.

2
neer17

Courir ./gradlew build --stacktrace pour vérifier les détails, qui vous indiqueront où le problème se produit, quelque chose comme:

e: [kapt] Une exception s'est produite: Android.databinding.tool.util.LoggedErrorException: erreurs de liaison de données trouvées. Fichier d'accesseur xx introuvable: xxx/app/src/main/res/layout/fragment_xxxx.xml Ligne: 108

Parfois, si vous avez modifié le nom de la propriété, en particulier lorsqu'il est modifié par refactor => rename, le nom de la propriété ne sera pas modifié automatiquement en xml.

2
li2