Android Databinding: "Methodenreferenzen mit '.' ist veraltet&quot

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?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage