Saya tidak mendapatkan jawaban yang memuaskan. Jadi berikut adalah tips yang merupakan ringkasan dari pengetahuan mengikat data saya.
Tips Untuk Mengatasi Masalah DataBinding
Memperbarui
Untuk mendapatkan error dan saran yang lebih akurat , saya sangat menyarankan untuk mengupdate Android Studio dan versi plugin Gradle ke yang terbaru. Karena saya tidak menghadapi banyak masalah setelah versi AS 3.2.
Lihat Android Studio Terbaru , dan Plugin Gradle Terbaru .
Solusi Orignal
Setelah membaca jawaban ini, Anda tidak akan terjebak dalam masalah pembuatan otomatis data binding untuk Kelas dan Variabel Data .
Periksa poin-poin ini satu per satu. Semua ini dapat menyelesaikan pekerjaan Anda. Poin 3 sampai terakhir sangat penting, jadi jangan sampai ketinggalan.
1. Periksa apakah pengikatan data diaktifkan
Anda harus mengaktifkan pengikatan data di build.gradle
. Jika tidak, tambahkan ini dan Sinkronkan .
android {
...
dataBinding {
enabled = true
}
...
}
2. Periksa tata letak diubah dalam tata letak penjilidan
Sekarang jika Anda ingin kelas data binding dibuat maka Anda harus membungkusnya xml layout
dengan data binding ( <layout
tag). Sesuatu seperti ini.
<?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>
Bersamaan dengan ini periksa apakah nama variabel yang mengikat sudah benar seperti pada kelas model tampilan
3. Nama kelas Binding yang dibuat secara otomatis?
Kelas data binding Anda harus dibuat setelah membuat tata letak binding.
Jika nama tata letak Anda dalam kasus ular activity_main.xml
maka kelas pengikatan data akan dibuat dalam kasus unta seperti ActivityMainBinding
.
4. Tidak Dapat Melihat Saran Impor?
Terkadang saat Anda mengetik ActivityMai...
, tidak muncul saran , dalam hal ini impor secara manual .
import <yourpackage>databinding.ActivityMainBinding;
5. Baca Build Fail Logcat
Kelas binding dan variabel baru Anda dalam tata letak tidak akan dibuat jika build Anda gagal. Jadi pertama-tama Buat proyek dengan Ctrl + F9 (Build> Make project) .
- Jika build gagal maka lihat apa itu error, biasanya kita mengalami error di bidang layout. Log kesalahan akan menunjukkan nomor baris kesalahan dengan masalah tersebut.
- Pengikatan mungkin gagal menyebabkan beberapa kesalahan bodoh , seperti kesalahan sintaks atau impor yang hilang. Dalam hal ini, Anda akan mendapatkan logcat yang penuh dengan error kelas pengikatan. Tetapi Anda harus membaca logcat lengkap untuk menemukan masalah yang sesuai .
6. Tutup dan buka proyek dari yang terbaru
Saya selalu melakukan ini karena memakan waktu lebih sedikit daripada Rebuild
/ Make
project.
- Tutup proyek dari File> Tutup Proyek
- Buka lagi dari yang terbaru
Perhatikan bahwa saya lebih suka Tutup dan Buka dari Terbaru karena membutuhkan waktu lebih sedikit daripada Rebuild / Restart IDE .
7. Membangun Kembali Proyek
Jika masih kelas Anda tidak dibuat. (Beberapa saat ketika kami menempelkan file tata letak, maka itu terjadi). Kemudian Bangun Ulang Proyek dari Build> Rebuild
( Bukan Bangun atau Buat proyek ). Ini akan menghasilkan kelas data binding Anda. ( Membangun kembali melakukan Sihir untukku. )
8. Memiliki Android Studio terbaru
Setelah memperbarui AS ke Android Studio 3.2 , saya merasakan banyak perbaikan bug dalam pembuatan otomatis data binding. Jadi, Anda juga harus memiliki AS terbaru.
Solusi untuk <variables
<data>
<variable
name="item"
type="com.package.Model"/>
</data>
Biasanya, ketika kita meletakkan variabel dalam layout, itu membuat pengambil dan penyetelnya. Dan kami dapat menggunakan binding.setItem(item);
dan binding.getItem();
, tetapi jika Anda tidak dapat melihat metode tersebut, baca informasi di bawah ini.
1. Tutup dan buka proyek dari yang terbaru
Jika Anda telah membuat variabel data - <variable
dalam tata letak Anda dan tidak muncul penyetel dan pengambil di kelas data binding, maka Tutup dan Buka dari Terbaru proyek Anda.
2. Proyek bersih setelah mengubah jenis
Jika Anda mengubah jenis beberapa <variable
dalam tata letak Anda dan jenis penyetel pengambil tidak berubah maka Bersihkan proyek ( Build> Clean Project
)
Kata-kata terakhir
Terakhir, jika kelas pengikatan Anda masih belum dibuat, maka kami memiliki senjata paling ampuh. - Mulai ulang Android Studio: D
- Pertama, coba mulai ulang , ini selalu menghasilkan variabel tata letak pengikatan saya setelah restart.
- Jika tidak berhasil maka Invalidate Cache & Restart .
Ini semua yang saya lakukan untuk menyelesaikan kesalahan pengikatan data saya. Jika Anda mendapatkan masalah lebih lanjut, Anda dapat berkomentar di sini.
dataBinding.enabled
di build.gradle Anda?