When using databinding in my app, I get the following warning when compiling:
Warning:Method references using '.' is deprecated. Instead of 'handler.onItemClick', use 'handler::onItemClick'
Please see my XML below.
<?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>
Please note the : from the conditional statement
Pretty straightforward message, until I change the '.' to '::'.
android:onClick="@{!active ? handler::onItemClick : null}"
Since the onItemClick is inside a conditional statement, it seems to interpret the first of the two ::'s as the 'else' statement of the condition. On the second ':', I get the error:
<expr> expected, got ':'
EDIT: As @CommonsWare suggested in the comments, inverting the statement to
"@{active ? null : handler::onItemClick}"
doesn't help either, a similar error is shown (see comments)
EDIT2: Apparently, when stripping the conditional statement away, being left with "@{handler::onItemClick}"
, it still gives an error: '!=', '%', '*', '+', ',', '-', '.', '/', <, <<, <=, '==', '>', '>=', '>>', '>>>' or '[' expected, got ':'
Using the dot-notation, still gives a warning when compiling
Is there any way to escape these ::'s, so it is interpreted correctly?
My guess is that the deprecation warning is shown because Android Data Binding is currently not being fully compatible with Java 8.
Putting the following into your project's build.gradle
file should hide mentioned warning.
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
Unless you are using Java 8 features in your project.
The '::' error is currently an open bug for the Android Studio xml editor.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With