web-dev-qa-db-fra.com

Reliure de l'auditeur; Impossible de trouver le poseur

J'essaie d'implémenter listener bindings , mais lorsque j'exécute mon code, l'erreur suivante apparaît:

Caused by: Android.databinding.tool.util.LoggedErrorException: Found data binding errors.
****/ data binding error ****msg:Cannot find the setter for attribute 'Android:onClick' with parameter type lambda on Android.widget.Button. file:~/GithubBrowser/app/src/main/res/layout/loading_state.xml loc:30:31 - 30:52 ****\ data binding error ****

C'est le fichier de mise en page en question:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto">

    <data>
        <import type="com.example.app.data.model.Resource"/>
        <import type="com.example.app.data.model.Status"/>
        <variable name="resource" type="Resource"/>
        <variable name="callback" type="com.example.app.ui.common.RetryCallback"/>
    </data>

    <LinearLayout
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:orientation="vertical"
        Android:gravity="center"
        Android:padding="@dimen/default_margin">

        <Button Android:id="@+id/retry"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="@string/retry"
            Android:onClick="@{() -> callback.retry()}"/>

    </LinearLayout>

</layout>

Et voici l'interface RetryCallback référencée dans la mise en page:

package com.example.app.ui.common

interface RetryCallback {

    fun retry()

}

Modifier

Le build.gradle de niveau supérieur:

buildscript {
    ext.Android_tools_version = '3.0.0-alpha3'
    ext.kotlin_version = '1.1.2-5'
    repositories {
        maven { url 'https://maven.google.com' }
        jcenter()
    }
    dependencies {
        classpath "com.Android.tools.build:gradle:$Android_tools_version"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

ext {
    architecture_version = '1.0.0-alpha2'
    constraint_version = '1.0.2'
    dagger_version = '2.11'
    espresso_version = '2.2.2'
    glide_version = '3.7.0'
    junit_version = '4.12'
    mockito_version = '2.7.19'
    mock_server_version = '3.6.0'
    moshi_version = '1.5.0'
    retrofit_version = '2.2.0'
    support_version = '25.4.0'
    timber_version = '4.5.1'
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
        maven { url 'https://maven.google.com' }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Et le module d'application build.gradle:

apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-kapt'

Android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "com.example.app"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        debug {
            testCoverageEnabled !project.hasProperty('Android.injected.invoked.from.ide')
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
    dataBinding {
        enabled = true
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

kapt {
    generateStubs = true
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"

    compile "com.Android.support:appcompat-v7:$support_version"
    compile "com.Android.support:cardview-v7:$support_version"
    compile "com.Android.support:design:$support_version"
    compile "com.Android.support:recyclerview-v7:$support_version"
    compile "com.Android.support.constraint:constraint-layout:$constraint_version"

    compile "Android.Arch.lifecycle:extensions:$architecture_version"
    compile "Android.Arch.lifecycle:runtime:$architecture_version"
    compile "Android.Arch.persistence.room:runtime:$architecture_version"

    compile "com.google.dagger:dagger:$dagger_version"
    compile "com.google.dagger:dagger-Android:$dagger_version"
    compile "com.google.dagger:dagger-Android-support:$dagger_version"

    compile "com.squareup.moshi:moshi:$moshi_version"
    compile "com.squareup.retrofit2:retrofit:$retrofit_version"
    compile "com.squareup.retrofit2:converter-moshi:$retrofit_version"

    compile "com.github.bumptech.glide:glide:$glide_version"

    compile "com.jakewharton.timber:timber:$timber_version"

    kapt "com.Android.databinding:compiler:$Android_tools_version"
    kapt "com.google.dagger:dagger-Android-processor:$dagger_version"
    kapt "com.google.dagger:dagger-compiler:$dagger_version"
    kapt "Android.Arch.persistence.room:compiler:$architecture_version"
    kapt "Android.Arch.lifecycle:compiler:$architecture_version"

    testCompile "junit:junit:$junit_version"
    testCompile "com.squareup.okhttp3:mockwebserver:$mock_server_version"
    testCompile ("Android.Arch.core:core-testing:$architecture_version", {
        exclude group: 'com.Android.support', module: 'support-compat'
        exclude group: 'com.Android.support', module: 'support-annotations'
        exclude group: 'com.Android.support', module: 'support-ccore-utils'
    })

    androidTestCompile "com.Android.support:appcompat-v7:$support_version"
    androidTestCompile "com.Android.support:cardview-v7:$support_version"
    androidTestCompile "com.Android.support:design:$support_version"
    androidTestCompile "com.Android.support:recyclerview-v7:$support_version"

    androidTestCompile ("com.Android.support.test.espresso:espresso-core:$espresso_version", {
        exclude group: 'com.Android.support', module: 'support-annotations'
        exclude group: 'com.google.code.findbugs', module: 'jsr305'
    })

    androidTestCompile ("com.Android.support.test.espresso:espresso-contrib:$espresso_version", {
        exclude group: 'com.Android.support', module: 'support-annotations'
        exclude group: 'com.google.code.findbugs', module: 'jsr305'
    })

    androidTestCompile "org.mockito:mockito-Android:$mockito_version"
}
22
Bryan

Je viens d'avoir ce problème et j'ai réussi à le résoudre en supprimant les dossiers .idea, .gradle et gradle et en laissant Android Studio recréer l'intégralité du projet à partir de fichiers gradle.

55
Matej Drobnič

Assurez-vous que apply plugin: 'kotlin-kapt' est dans build.gradle.

Si vous vous en tenez à cela et qu’il n’est pas nécessaire de reconstruire le projet, supprimer des répertoires, effacer les paramètres de l’AS n’importe quoi. Le IDE est correct sans l'avoir mais la construction échoue. 

Ce serait bien si Android studio avait de meilleurs messages d'erreur pour cela.

21
kevswanberg

Rebuilding projet a fonctionné pour moi. 

  • Reconstruire le projet à partir deBuild>Rebuild
  • Résoudre les problèmes si vous obtenez dans les journaux de construction.
  • Reconstruire à nouveau le projet à partir deBuild>Rebuild
1
Khemraj

Il suffit de reconstruire le projet. C’est probablement parce que vous avez refactorisé 

1
Mladen Rakonjac

Comme suggéré par tous les autres frères frères, oui, l'erreur disparaît après la suppression des dossiers .idea, .gradle et gradle.

(Ceci est juste pour une personne curieuse pourquoi cela se produit, voici mon cas d'utilisation):.

0
Govind Tank

Cas valide: Cette erreur est générée si vous avez une erreur dans le fichier XML. Commencez par lire attentivement le fichier XML et si vous trouvez un problème, corrigez-le.

Cas invalide: Pour moi, le problème a été soulevé pour un fichier déjà supprimé du projet ou renommé et la liaison de données faisait référence à l'ancien fichier.

Je ne sais pas comment résoudre ce problème à chaque fois, mais j'ai un certain nombre de choses qui fonctionnent parfois et qui ne fonctionnent pas.

Numéro fixe 1:

Exécution de '' wrapper dégradé '' dans la racine du projet.

Numéro fixe 2:

Projet Android Studio Clean

Supprimez ensuite ces dossiers à la racine du projet:

rm -rf .gradle /

rm -rf app/build /

rm -rf build

rm -rf gradle

rm -rf gradlew

Android Studio Invalider et redémarrer

Tout devrait être revenu à la normale maintenant.

0
noev
  1. Supprimer le dossier .gradle.
  2. Exécutez le projet.
  3. Nettoyez le projet.
  4. Exécutez le projet.

Travaillez pour moi ... Si l'ordre se mélange ou rate, cela ne fonctionne pas pour moi.

0
tanshiwei