Android Databinding: "Methodenreferenzen mit '.' ist veraltet"
Wenn ich die Datenbindung in meiner App verwende, wird beim Kompilieren die folgende Warnung angezeigt:
Warning:Method references using '.' is deprecated. Instead of 'handler.onItemClick', use 'handler::onItemClick'
Bitte sehen Sie mein XML unten.
<?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"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable name="handler" type="ClickHandler"/>
<variable name="active" type="boolean"/>
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:onClick="@{!active ? handler.onItemClick : null}"
android:background="@color/backgroundWhite"/>
</RelativeLayout>
</layout>
Bitte beachten Sie das: aus der bedingten Anweisung
Recht unkomplizierte Nachricht, bis ich das '.' Ändere zu '::'.
android:onClick="@{!active ? handler::onItemClick : null}"
Da sich das onItemClick in einer bedingten Anweisung befindet, scheint es die erste der beiden :: 's als die' else'-Anweisung der Bedingung zu interpretieren. Beim zweiten ':' erhalte ich den Fehler:
<expr> expected, got ':'
EDIT: Wie @CommonsWare in den Kommentaren vorgeschlagen hat, invertieren Sie die Anweisung in"@{active ? null : handler::onItemClick}"
hilft auch nicht, ein ähnlicher Fehler wird angezeigt (siehe Kommentare)
EDIT2: Offensichtlich bleibt beim Entfernen der bedingten Anweisung @ übri"@{handler::onItemClick}"
, es gibt immer noch einen Fehler:'!=', '%', '*', '+', ',', '-', '.', '/', <, <<, <=, '==', '>', '>=', '>>', '>>>' or '[' expected, got ':'
Bei Verwendung der Punktnotation wird beim Kompilieren immer noch eine Warnung ausgegeben
Gibt es eine Möglichkeit, diese :: 's zu umgehen, damit sie richtig interpretiert werden?