Tôi đã không nhận được bất kỳ câu trả lời hài lòng. Vì vậy, đây là những mẹo là tóm tắt kiến thức liên kết dữ liệu của tôi.
Mẹo để giải quyết vấn đề liên kết dữ liệu
Cập nhật
Để nhận được các lỗi và đề xuất chính xác hơn , tôi thực sự khuyên bạn nên cập nhật phiên bản plugin Android Studio và Gradle lên phiên bản mới nhất. Bởi vì tôi không phải đối mặt với nhiều vấn đề sau phiên bản AS 3.2.
Xem Android Studio mới nhất và Plugin Gradle mới nhất .
Giải pháp Orignal
Sau khi đọc câu trả lời này, bạn sẽ không gặp khó khăn trong các vấn đề tự động tạo liên kết dữ liệu cho cả Lớp và Biến dữ liệu .
Kiểm tra từng điểm một. Bất kỳ điều nào trong số này có thể làm cho công việc của bạn được hoàn thành. Điểm 3 đến cuối cùng thực sự quan trọng, vì vậy đừng bỏ lỡ chúng.
1. Kiểm tra xem ràng buộc dữ liệu đã được bật chưa
Bạn nên có dữ liệu ràng buộc kích hoạt trong build.gradle
. Nếu không, hãy thêm cái này và Đồng bộ hóa .
android {
...
dataBinding {
enabled = true
}
...
}
2. Bố cục kiểm tra được chuyển đổi trong bố cục ràng buộc
Bây giờ nếu bạn muốn lớp liên kết dữ liệu được tạo thì bạn nên bọc xml layout
bằng liên kết dữ liệu ( <layout
thẻ). Một cái gì đó như thế này.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.constraint.ConstraintLayout>
</layout>
Cùng với việc này, hãy kiểm tra xem tên biến liên kết có đúng như trong lớp mô hình chế độ xem hay không
3. Tên lớp Binding được tạo tự động?
Lớp liên kết dữ liệu của bạn sẽ được tạo sau khi tạo bố cục liên kết.
Nếu tên bố trí của bạn ở trong trường hợp con rắn activity_main.xml
thì lớp liên kết dữ liệu sẽ được tạo trong trường hợp lạc đà như ActivityMainBinding
.
4. Không thể Xem Đề xuất Nhập?
Đôi khi khi bạn nhập ActivityMai...
, sau đó nó không hiển thị gợi ý , trong trường hợp đó, hãy nhập thủ công .
import <yourpackage>databinding.ActivityMainBinding;
5. Đọc bản ghi lỗi xây dựng bản ghi
Lớp ràng buộc của bạn và các biến mới trong bố cục sẽ không được tạo nếu bản dựng của bạn không thành công. Vì vậy, đầu tiên Tạo dự án bằng Ctrl + F9 (Xây dựng> Tạo dự án) .
- Nếu một bản dựng không thành công thì hãy xem lỗi là gì, thông thường chúng ta có lỗi trong các trường bố cục. Nhật ký lỗi sẽ chỉ ra số dòng lỗi với sự cố.
- Việc liên kết có thể không thành công gây ra một số lỗi ngu ngốc , như lỗi cú pháp hoặc nhập thiếu. Trong trường hợp đó, bạn sẽ nhận được logcat đầy lỗi của các lớp ràng buộc. Nhưng bạn nên đọc logcat hoàn chỉnh để tìm vấn đề thích hợp .
6. Đóng và mở dự án từ gần đây
Tôi luôn làm điều này vì nó tốn ít thời gian hơn nhiều so với Rebuild
/ Make
dự án.
- Đóng dự án từ Tệp> Đóng dự án
- Mở lại từ gần đây
Lưu ý rằng tôi thích Đóng và Mở từ Gần đây vì nó mất ít thời gian hơn nhiều so với Xây dựng lại / Khởi động lại IDE .
7. Xây dựng lại dự án
Nếu lớp của bạn vẫn chưa được tạo. (Một số thời điểm khi chúng tôi dán tệp bố cục, sau đó nó xảy ra). Sau đó xây dựng lại dự án từ Build> Rebuild
( Không xây dựng hoặc thực hiện dự án ). Nó sẽ tạo ra lớp ràng buộc dữ liệu của bạn. ( Xây dựng lại ma thuật cho tôi. )
8. Có Android Studio mới nhất
Sau khi cập nhật AS lên Android Studio 3.2 , tôi cảm thấy nhiều lỗi được sửa trong quá trình tạo tự động liên kết dữ liệu. Vì vậy, bạn cũng nên có AS mới nhất.
Giải pháp cho <variables
<data>
<variable
name="item"
type="com.package.Model"/>
</data>
Thông thường, khi chúng ta đặt một biến trong bố cục, nó sẽ tạo ra một bộ định vị và bộ định vị của nó. Và chúng ta có thể sử dụng binding.setItem(item);
và binding.getItem();
, nhưng nếu bạn không thể thấy những phương pháp đó thì hãy đọc thông tin bên dưới.
1. Đóng và mở dự án từ gần đây
Nếu bạn đã tạo một biến dữ liệu - <variable
trong bố cục của bạn và nó không hiển thị bộ cài và bộ nhận trong lớp liên kết dữ liệu, thì hãy Đóng và Mở từ Gần đây dự án của bạn.
2. Làm sạch dự án sau khi thay đổi loại
Nếu bạn đã thay đổi kiểu của một số <variable
trong bố cục của mình và kiểu setter getter không thay đổi thì Clean project ( Build> Clean Project
)
Từ cuối cùng
Cuối cùng, nếu lớp ràng buộc của bạn vẫn chưa được tạo ra, thì chúng ta có vũ khí mạnh nhất của mình. - Khởi động lại Android Studio: D
- Đầu tiên, hãy thử khởi động lại , điều này luôn tạo ra các biến của bố cục ràng buộc của tôi sau khi khởi động lại.
- Nếu nó không hoạt động thì Vô hiệu hóa bộ nhớ cache & Khởi động lại .
Đây là tất cả những gì tôi làm để giải quyết các lỗi liên kết dữ liệu của mình. Nếu gặp vấn đề gì khác, bạn có thể bình luận tại đây.
dataBinding.enabled
trong build.gradle của bạn không?