Impossible de trouver le setter pour l'attribut avec le paramètre
Je suis en train de travailler sur DataBinding
avec BindingAdapter
. Voici ma méthode personnalisée.
@BindingAdapter("{bind:fadevisible}")
public static void setFadeVisible(LinearLayout view, int visible) {
Log.e("Bindings", "setFadeVisible: ");
}
Et dans le fichier xml, je suis l'appelant comme
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
app:fadevisible="@{1}"/>
Mais il montre l'erreur
D'erreur:échec de l'Exécution de la tâche:app:compileDebugJavaWithJavac'.
java.lang.RuntimeException: Trouvé la liaison de données des erreurs.
****/liaison de données d'erreur ****erreur:Impossible de trouver le setter pour l'attribut 'app:fadevisible' avec un paramètre de type int sur android.widget de.LinearLayout.
fichier:\app\src\main\res-main\layout\activity_detail.xml
loc:236:31 - 236:54
****\ liaison de données d'erreur ****
J'ai vérifié cette et cette thread mais de toute façon il n'est pas de m'aider, comme vous pouvez le voir je suis de passage int
à partir de xml et dans BindingAdapter
aussi je l'ai mentionné LinearLayout
avec int
valeur.
Même j'ai une autre méthode, où les paramètres sont différents et sa fonctionne bien
@BindingAdapter({"bind:image_round"})
public static void loadRoundImage(ImageView imageView, String url)
- semble bien pour moi.
- oui, mais de toute façon le mien n'est pas de travail, même d'une autre méthode ayant presque la même syntaxe et sa fonctionne bien
Vous devez vous connecter pour publier un commentaire.
Votre
@BindingAdapter
définition a l'air un peu bizarre pour moiCe n'est pas le même comme
ou
qui devrait fonctionner parfaitement bien.
Vous essayez
@BindingAdapter({"bind:image_round"}) public static void loadRoundImage(ImageView imageView, String url)
et il fonctionne parfaitement sans aucune erreur.@BindingAdapter("bind:fadevisible")
travaillé, mais pouvez-vous expliquer pourquoi@BindingAdapter({"bind:fadevisible"})
ne fonctionne pas ??Assurez-vous dans l'app niveau gradle, vous avez
apply plugin: 'kotlin-kapt'
J'ai eu ce problème avec la liaison à
ImageView
et contrairement à votre cas, la définition de mon adaptateur de liaison était correct, mais encore, l'IDE gardé de me donner ce message d'erreur. Après avoir passé de nombreuses heures à la recherche de la cause, j'ai compris que l'espace de noms que j'utilise dansxml
fichier de mise en page doit être exactement ce que j'ai déclaré dans@BindingAdapter
.Donc, si mon xml est comme ci-dessous:
Alors ma méthode de reliure doit être comme ci-dessous:
Noter que la liaison de la méthode d'annotation indique l'espace de noms en elle , c'est à dire
@BindingAdapter({"app:image_url"})
exactement comme il est utilisé dans le fichier de mise en pageapp:image_url="@{item.logoUrl}"
Donc, contrairement à ce qui est dit dans la plupart des tutoriels, ne pas utiliser
@BindingAdapter({"bind:image_url"})
dans votre méthode de reliure etapp:image_url="@{item.logoUrl}"
dans votrexml
fichier.J'avais d'abord défini mon
customBindidingAdapter
privé: