Ich verwende in meiner neuen App die Datenbindungsbibliothek von Android. Derzeit versuche ich, eine Referenz einer anderen Ansicht an eine Methode zu übergeben.Android Data Binding - Referenz
Ich habe eine ImageButton
mit einer onClickListener
. In diesem onClick-Listener möchte ich eine Referenz der Stammansicht an die Methode übergeben.
<RelativLayout
android:id="@+id/root_element"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:contentDescription="@string/close_dialog"
android:src="@drawable/ic_close_212121_24dp"
android:background="@android:color/transparent"
android:onClick="@{() -> Helper.doSth(root_element)}"/>
</RelativLayout>
Dieser oben angegebene Quellcode ist nur ein Beispiel und nicht der vollständige. Es gibt mehr Kinder und auch die Bildschaltfläche ist kein direktes Kind des Wurzelelements. Aber ich denke, die Bedeutung ist klar.
Ich habe bereits versucht, eine Referenz zu übergeben, indem ich die ID der Stammansicht angegeben habe (siehe oben). Aber das funktioniert nicht. Wenn ich versuche, dies zu kompilieren, bekomme ich den Fehler, dass der Typ root_element
nicht angegeben ist.
Ich habe auch versucht, die generierte Bindungsklasse zu importieren und auf das Root-Element durch das öffentliche Feld zuzugreifen. Auch diese Methode funktioniert nicht, da die Bindungsklasse zuerst erzeugt werden muss.
Gibt es eine Möglichkeit, eine Referenz einer Ansicht an eine Methode zu übergeben? Ich weiß, dass ich die ID der Root-Ansicht mit übergeben konnte, aber ich will das nicht, da ich einen Weg finden muss, einen Verweis auf diese Ansicht nur mit der angegebenen ID zu erhalten.
Ich denke, das sollte die Antwort sein. Viel einfacher und mit Google-Dokumenten geklebt. Für Leute, die mehr Informationen wünschen, können sie sich unten auf Antwort und Google IO 2016 beziehen. http://stackoverflow.com/questions/37727600/cannot-refer-to-other-view-id-in-android-data-binding https://www.youtube.com/watch?v=DAmMN7m3wLU&feature=youtu.be&t=13m59s – OnJohn
Diese Antwort ist korrekt. Wann immer Sie die Datenbindung verwenden, um die Ansichtselemente zu übergeben. Es ist standardmäßig camel-cased. –