Không thể lấy Root View từ Data Binding sau khi bật plugin safe-args


15

Tôi đang làm việc trên một ứng dụng Android bằng dataBinding và hiện đang cố gắng thêm plugin safe-args, nhưng sau khi kích hoạt plugin, tôi không còn có thể xem được root thông qua bind.root - Android Studio báo lỗi:

Unresolved Reference
None of the following candidates is applicable because of a receiver type mismatch:
* internal val File.root: File defined in kotlin.io

Làm thế nào tôi có thể có được cơ sở dữ liệu và các đối số an toàn để chơi tốt với nhau?

Lưu ý rằng trong khi đoạn mã nằm trong Kotlin, tôi sẽ vui vẻ nhận câu trả lời Java. Không thoải mái bằng Java nhưng tôi có thể dễ dàng đọc và dịch nó.

Tôi đã không thể tìm thấy bất kỳ ai khác có cùng vấn đề bằng cách Googling thông báo lỗi và "args an toàn". Tôi đã thử đầu tiên với classpath được liệt kê trong các tài liệu Android tại đây: https://developer.android.com/guide/navlation/navlation-pass-data

classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.1.0"

Và sau đó cũng tìm thấy một hướng dẫn gợi ý tôi sử dụng:

classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha07"

Cả hai đều có cùng một vấn đề: bind.root đã báo lỗi với plugin được kích hoạt

Đây là onCreateView () cho đoạn của tôi. Dòng trả về đó hoạt động chính xác khi các đối số an toàn không được bật và không hoạt động khi được bật

   override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    binding = DataBindingUtil.inflate(inflater, R.layout.fragment_encoder, container, false)

    return binding.root
}

Bất kỳ trợ giúp giải quyết hoặc hiểu vấn đề này được đánh giá cao nhất!

Câu trả lời:


11

Tôi có cùng một vấn đề, nó rất có dây đối với tôi, nhưng chỉ cần đổi tên bố cục sẽ hoạt động trở lại, hãy thử nó: D


2
Điều đó đã làm được mánh khóe, đủ lạ, cảm ơn. Đối với những người khác đến đây với cùng một vấn đề, tất cả những gì tôi phải làm là tái cấu trúc> đổi tên tệp xml bố cục được liên kết với lớp không nhận ra ràng buộc.root. Bạn cũng sẽ phải đổi tên loại lớp được tạo tự động cho ràng buộc tương ứng. Khi tôi đã làm điều đó, mọi thứ hoạt động chính xác và tôi thậm chí có thể đổi tên lại thành tên ban đầu. Không chắc làm thế nào điều này đã làm bất cứ điều gì xây dựng lại dự án đã không ..
Hannah S.

Ngoài ra, nếu bạn ở đây do vấn đề với các đối số an toàn, có thể muốn xem xét sử dụng ViewModel và LiveData được chia sẻ thay thế. Đó là những gì tôi đang sử dụng vì tôi phải tiếp tục khi bị mắc kẹt trong các cuộc tranh cãi an toàn và tôi hạnh phúc hơn nhiều
Hannah S.

24

Tôi có cùng một vấn đề và cuối cùng tôi đã thử

Tệp -> Bộ nhớ cache không hợp lệ / Khởi động lại

Nó làm việc cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.