Quando si utilizza l'associazione dati nella mia app, ottengo il seguente avviso quando si compila:Associazione dati Android: "Riferimenti al metodo usando '.' è deprecato"
Warning:Method references using '.' is deprecated. Instead of 'handler.onItemClick', use 'handler::onItemClick'
Si prega di vedere il mio XML di seguito.
<?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>
prega di notare la : dal istruzione condizionale messaggio
piuttosto semplice, fino a quando cambio la '' a '::'.
android:onClick="@{!active ? handler::onItemClick : null}"
Dal momento che l'onItemClick si trova all'interno di un'istruzione condizionale, sembra di interpretare il primo dei due :: 's come il '' else della condizione. Al secondo ':', ottengo l'errore:
<expr> expected, got ':'
EDIT: Come @CommonsWare suggerito nei commenti, invertendo la dichiarazione di "@{active ? null : handler::onItemClick}"
non aiuta neanche, viene visualizzato un errore simile (vedi commenti)
EDIT2: a quanto pare, quando si spellano l'istruzione condizionale via, essere lasciato con "@{handler::onItemClick}"
, dà ancora un errore: '!=', '%', '*', '+', ',', '-', '.', '/', <, <<, <=, '==', '>', '>=', '>>', '>>>' or '[' expected, got ':'
Utilizzando il dot-notation, dà ancora un avvertimento quando si compila
C'è un modo per sfuggire a questi :: s, quindi è interpretato correttamente?
In questo caso, si potrebbe provare invertendo l'ordine come una soluzione: '@ {attivo? null: handler :: onItemClick} '. Altrimenti, sembra un bug nel supporto per l'associazione dei dati. – CommonsWare
@CommonsWare: Purtroppo, che dà anche un errore, il primo dei due ::! 'S questa volta: '' = ' '%', '*', '+',', '' - '' ' '/', <, <<, <=, '==', '>', '> =', '>>', '>>>' o '[' previsto, ottenuto ':' ' – Marcel50506
Phooey.. Se si riesce a creare un progetto di esempio che illustra l'errore, si potrebbe [inviare una segnalazione di bug] (https://code.google.com/p/android/issues/list). Non ne vedo uno là fuori per questo. Alla fine cercherò di riprodurlo da solo, se non hai la possibilità di presentare un problema. – CommonsWare