Je joue avec la liaison bidirectionnelle de l'API de liaison de données introduite dans Android Studio 2.1 AFIK.La liaison bidirectionnelle ne peut pas résoudre un setter pour la propriété java.lang.String
Je reçois cette erreur intéressante:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:The expression address.street cannot cannot be inverted: Two-way binding cannot resolve a setter for java.lang.String property 'street'
file:/path/to/layout.xml
loc:34:37 - 34:50 ****\ data binding error ****
Lorsque je tente de Google cette erreur je trouve juste un affichage japonais ancien Twitter 4 jours d'un gars qui est en train de pleurer à son sujet ...
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/edit_hint_zip"
android:text="@={address.zip}"
tools:text="12345"/>
Que address.zip
est un String
. Je devine que le problème ici est CharSequence
contre String
comme valeur de retour de EditText.getText()
.
Mon idée était de définir mais cela ne fonctionne pas pour moi:
@NonNull
@InverseBindingAdapter(attribute = "text")
public static String getText(EditText edit) {
return edit.getText().toString();
}
Qu'est-ce que je manque?
Pouvez-vous lier le commit dont vous parlez? Je vois là juste un engagement qui a été poussé il y a 8 semaines, ce qui ne semble pas être lié. – rekire
Voulez-vous dire le commit [0137f2] (https://android.googlesource.com/platform/frameworks/data-binding/+/0137f239576702ac3ef4dd887b445d71f35169dd)? – rekire
Oui, et j'ai également testé sur différentes versions d'Android Studio. –