Tout à coup, mes liaisons pour Android cessé de fonctionner, tout ce que je construis maintenant, je reçois juste ce message. Erreur: Échec de l'exécution de la tâche ': app: compileDevDebugJavaWithJavac'.Liaisons Android cessé de fonctionner
java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:Cannot find the getter for attribute 'android:text' with value type java.lang.String on android.widget.EditText. file:C:\path\to\layout\layout.xml loc:85:12 - 96:54 ****\ data binding error ****
Ce que j'ai essayé
D'abord il a été suggéré les liaisons ne compilera pas s'il y a des erreurs dans mes fichiers, donc supprimés tous les fichiers de mise en page où je les liaisons jusqu'à un fichier layout.xml
. Là, j'ai
<EditText
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@{model.name}" />
... et il fonctionne bien, si j'ajoute la liaison dans les deux sens android:text="@={model.name}"
Il jette l'erreur précédente.
Suivant, j'ajouter
@InverseBindingAdapter(attribute = "android:text")
public static String captureEditTextValue(EditText view) {
return view.getText().toString();
}
... il lance une nouvelle erreur. Erreur: Échec de l'exécution de la tâche ': app: compileDevDebugJavaWithJavac'.
java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:Could not find event 'android:textAttrChanged' on View type 'android.widget.EditText' file:C:\Users\EdgeTech\AndroidStudioProjects\purse\purse-customer\app\src\main\res\layout\get_phone_layout.xml loc:85:12 - 96:54 ****\ data binding error ****
est allé plus loin, à factoriser à ce
@InverseBindingAdapter(attribute = "android:text", event = "android:textAttrChanged")
public static String captureEditTextValue(EditText view) {
return view.getText().toString();
}
... donne toujours l'erreur précédente.
Mon installation
- Android Studio: 2.3.3
- Gradle: Construits Outils 2.3.3
En ce qui concerne la liaison bidirectionnelle, 'android: text =" @ = {model.name} "' cette ligne est suffisante si votre variable est 'String', Si vous avez d'autres types de données alors vous devez faire l'inverse contraignant. –
@RaviRupareliya oui c'est une chaîne. – oreofeolurin
Puis, comme je l'ai déjà dit, si c'est 'String',' InverseBinding' n'est pas du tout nécessaire. –