Tidak dapat memperoleh Tampilan Root dari Penjilidan Data setelah mengaktifkan plugin safe-args

15

Saya sedang mengerjakan aplikasi Android menggunakan dataBinding dan saat ini saya mencoba untuk menambahkan plugin safe-args, tetapi setelah mengaktifkan plugin, saya tidak bisa lagi mendapatkan tampilan root melalui binding.root - Android Studio memberikan kesalahan:

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

Bagaimana saya bisa mendapatkan penyatuan data dan safe-args untuk bermain bagus bersama?

Perhatikan bahwa selagi cuplikan kode ada di Kotlin, saya akan dengan senang hati menerima jawaban Java. Tidak senyaman di Jawa tapi saya bisa dengan mudah membacanya dan menerjemahkannya.

Saya belum dapat menemukan orang lain dengan masalah yang sama dengan Googling pesan kesalahan dan "safe args". Saya mencoba dulu dengan classpath yang tercantum dalam Android docs di sini: https://developer.android.com/guide/navigation/navigation-pass-data

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

Dan kemudian juga menemukan tutorial yang menyarankan saya gunakan:

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

Keduanya memiliki masalah yang sama: binding.root memberi kesalahan dengan plugin diaktifkan

Inilah onCreateView () saya untuk fragmen saya. Baris balik itu berfungsi dengan baik saat safe-args tidak diaktifkan dan tidak berfungsi saat diaktifkan

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

    return binding.root
}

Bantuan apa pun yang memecahkan atau memahami masalah ini sangat dihargai!

Hannah S.
sumber

Jawaban:

11

Saya memiliki masalah yang sama, itu sangat kabel untuk saya, tetapi hanya mengubah nama tata letak akan berfungsi lagi, cobalah: D

Markang
sumber
2
Itu memang berhasil, anehnya, terima kasih. Untuk yang lain datang ke sini dengan masalah yang sama, yang harus saya lakukan adalah refactor> ganti nama file xml layout yang terkait dengan kelas yang tidak mengenali binding.root. Anda juga harus mengganti nama tipe kelas yang dibuat secara otomatis untuk pengikatan yang sesuai. Setelah saya melakukan itu, semuanya bekerja dengan benar dan saya bahkan dapat mengubah nama kembali menjadi nama aslinya. Tidak yakin bagaimana ini melakukan sesuatu yang membangun kembali proyek tidak ..
Hannah S.
Juga jika Anda di sini karena masalah dengan safe-args, mungkin ingin melihat ke dalam menggunakan ViewModel dan LiveData sebagai gantinya. Itulah yang saya gunakan sekarang karena saya harus terus berjalan ketika saya terjebak di safe-args dan saya jauh lebih bahagia
Hannah S.
24

Saya memiliki masalah yang sama dan akhirnya saya mencoba

File -> Cache / Restart Tidak Valid

Ini bekerja untuk saya.

Daniel Chin
sumber