在我的应用程序中使用数据绑定时,我在编译时收到以下警告:
Warning:Method references using '.' is deprecated. Instead of 'handler.onItemClick', use 'handler::onItemClick'
请参阅下面我的 XML。
<?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>
请注意:从条件语句
非常简单的消息,直到我更改了“.”到 '::'。
android:onClick="@{!active ? handler::onItemClick : null}"
由于 onItemClick 位于条件语句内,因此它似乎将两个 :: 中的第一个解释为条件的“else”语句。在第二个“:”上,我收到错误:
<expr> expected, got ':'
编辑:正如@CommonsWare 在评论中建议的那样,将语句反转为"@{active ? null : handler::onItemClick}"
也没有帮助,显示类似的错误(参见评论)
EDIT2:显然,当剥离条件语句时,留下"@{handler::onItemClick}"
,仍然报错:'!=', '%', '*', '+', ',', '-', '.', '/', <, <<, <=, '==', '>', '>=', '>>', '>>>' or '[' expected, got ':'
使用点符号,编译时仍然给出警告
有什么方法可以转义这些::,以便正确解释它吗?