Khi sử dụng liên kết dữ liệu trong ứng dụng của tôi, tôi nhận được cảnh báo sau khi biên dịch:Android Databinding: "Phương pháp tham chiếu sử dụng '.' bị phản đối"
Warning:Method references using '.' is deprecated. Instead of 'handler.onItemClick', use 'handler::onItemClick'
Xin xem XML của tôi dưới đây.
<?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>
Xin lưu ý : từ tuyên bố có điều kiện nhắn
Khá đơn giản, cho đến khi tôi thay đổi '' đến '::'.
android:onClick="@{!active ? handler::onItemClick : null}"
Kể từ khi onItemClick là bên trong một tuyên bố có điều kiện, có vẻ như để giải thích đầu tiên của hai :: 's là '' tuyên bố khác của tình trạng này. Ngày thứ hai ':', tôi nhận được lỗi:
<expr> expected, got ':'
EDIT: Như @CommonsWare gợi ý trong các ý kiến, đảo ngược tuyên bố để "@{active ? null : handler::onItemClick}"
không giúp được gì, một lỗi tương tự được hiển thị (xem ý kiến)
EDIT2: Rõ ràng, khi tước tuyên bố có điều kiện đi, bị bỏ lại với "@{handler::onItemClick}"
, nó vẫn mang lại một lỗi: '!=', '%', '*', '+', ',', '-', '.', '/', <, <<, <=, '==', '>', '>=', '>>', '>>>' or '[' expected, got ':'
Sử dụng dot-ký hiệu, vẫn đưa ra một cảnh báo khi biên soạn
Có cách nào để thoát khỏi các :: của, vì vậy nó được giải thích một cách chính xác?
Trong trường hợp này, bạn có thể thử đổi thứ tự như một giải pháp thay thế: '@ {active? null: handler :: onItemClick} '. Nếu không, điều này giống như một lỗi trong hỗ trợ ràng buộc dữ liệu. – CommonsWare
@CommonsWare: Thật không may, điều đó cũng đưa ra một lỗi, vào ngày đầu tiên của hai :: 's thời gian này: ''! = ','% ',' * ',' + ',', ',' - ','. ','/', <, <<, <=, '==', '>', '> =', '>>', '>>>' hoặc '[' dự kiến, có ':' ' – Marcel50506
Phooey. Nếu bạn có thể tạo dự án mẫu thể hiện lỗi, bạn có thể [đăng báo cáo lỗi] (https://code.google.com/p/android/issues/list). Tôi không thấy một cái ở đó vì điều này. Cuối cùng tôi sẽ cố gắng tái tạo bản thân này, nếu bạn không có cơ hội để gửi một vấn đề. – CommonsWare