Saya telah mengikuti kelas fragmen yang ditulis dalam Java menggunakan perpustakaan penyatuan data baru
import com.example.app.databinding.FragmentDataBdinding;
public class DataFragment extends Fragment {
@Nullable
private FragmentDataBinding mBinding;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false);
return mBinding.getRoot();
}
}
Ini mengkompilasi dan berjalan dengan baik.
Saya mencoba untuk menulis ulang di Kotlin dan muncul sebagai berikut:
import com.example.app.databinding.FragmentDataBdinding
class ProfileFragment : Fragment() {
private var mBinding: FragmentDataBinding? = null
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false)
return mBinding!!.getRoot()
}
}
Tapi sekarang langkah :app:compileDebugKotlin
output sebagai berikut:
Kesalahan: (16, 38) Referensi yang tidak terselesaikan: penyatuan data
Kesalahan: (37, 27) Referensi yang belum terselesaikan: FragmentDataBinding
Bagaimana saya bisa menggunakan perpustakaan penyatuan data android dengan Kotlin?
Tingkat atas saya build.gradle
:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.android.databinding:dataBinder:1.0-rc4'
}
}
allprojects {
repositories {
jcenter()
}
}
build.gradle
Dir dalam aplikasi saya (hanya bagian yang relevan):
apply plugin: 'com.android.application'
apply plugin: 'com.android.databinding'
apply plugin: 'kotlin-android'
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
buildscript {
ext.kotlin_version = '0.14.451'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
}
}
repositories {
mavenCentral()
maven {
url 'http://oss.sonatype.org/content/repositories/snapshots'
}
}
Saya menggunakan Android Studio 1.4, Build tools versi 23.0.1, Android SDK 23, SDK tools 24.4.0
java
android
kotlin
android-databinding
Mikhail
sumber
sumber
apply plugin: 'kotlin-kapt'
file aplikasi gradle dalam versi terbaru.Jawaban:
Coba gunakan konfigurasi ini:
Di build.gradle utama :
Aplikasi build.gradle :
sumber
2.2.0-alphaX
tersedia, dan FYI versi pengikatan data sama dengan versi android-gradle-plugin itu sendiri. sehingga Anda dapat mengeksternalisasi versi itu dan menggunakannya sebagai versi kompiler.apply plugin: 'kotlin-kapt'
juga. Lihat stackoverflow.com/a/42974558/1916449Saya menemukan solusi baru, semoga akan membantu Anda.
Pertama-tama periksa apakah plugin diterapkan:
kemudian
Anda mungkin memiliki kesalahan dalam ketergantungan:
MENGGUNAKAN
dari pada
Anda dapat mengunjungi di sini untuk versi baru
Terima kasih.
sumber
Pembaruan 2: Ini adalah jawaban yang sangat lama, alih-alih merujuk pada jawaban lrampazzo.
Ini bekerja dengan 1.0-rc4, put
ke dalam dependensi Anda
Terima kasih Ghedeon, untuk tautannya di komentar
Pembaruan : Ini contoh proyek hello world yang sangat sederhana
sumber
Exception while analyzing expression at (12,23) in /projectpath/KotlinDataBinding/app/src/main/java/com/example/kotlindatabinding/MainActivity.kt:
. Apakah Anda memiliki kesalahan yang sama? Dan apa versi studio android Anda?Versi kompilasi Binding Data sama dengan versi gradle di file build.gradle proyek Anda:
dan versi gradle adalah
Berikut adalah contoh tautan untuk menyelesaikan penggunaan pustaka penyatuan data di kotlin.
https://proandroiddev.com/modern-android-development-with-kotlin-september-2017-part-1-f976483f7bd6
sumber
dataBinding.enabled = true
adalah apa yang saya lupaUntuk Memecahkan masalah, Anda harus meletakkan
di bagian atas build.gradle (Module: app), lalu letakkan baris ini dalam dependensi
Anda dapat menemukan versi plugin android dengan masuk ke menu
Kemudian Sinkronkan Lagi. Jika Anda melihat peringatan ini, abaikan saja.
sumber
Coba ini. Studio Android 2.0 (2.1)
Di build.gradle
Dalam proyek saya:
buildToolsVersion = "23.0.3"
di build.gradle tingkat atas
sumber
ini bekerja untuk saya di androidStudio ver3.1.3
sumber
Pengikatan data konfigurasi di kotlin
build.gradle (aplikasi folder)
Nikmati Kotlin ...
sumber
Pembaruan Penting
Anda dapat melihat di dokumentasi Android.
Jadi Hanya Perbarui Anda Android Studio untuk V3.2 atau yang lebih baru . dan hapus semua konfigurasi yang tidak perlu.
Jadi cukup aktifkan dataBinding di tingkat aplikasi
build.gradle
.Ini akan melakukan semua hal untuk Anda secara otomatis.
Anda dapat dengan aman menghapus di bawah garis-
Hapus databinding.compiler
Menghapus
kapt
Konfigurasi lengkap saya
build.gradle (Proyek)
Gunakan gradle versi terbaru . Gunakan kotlin versi terbaru .
build.gradle (Aplikasi)
Penting. Jangan hanya menyalin dan menempelkan konfigurasi. Lihat jawaban ini untuk mengatur versi Kotlin.
gradle-wrapper.properties
sumber
Dalam kasus saya, kesalahannya adalah
Unresolved reference: RegisterationUserBinding
saya hanya menggunakan nama tata letak sayafragment_registeration_user
seperti iniFragmentRegisterationUserBinding
dan membuatnya dalam tata letak Databinding dan kesalahan hilang.sumber
Tambahkan yang mengikuti Anda
app build.gradle
Ini akan melakukan triknya.
$android_plugin_version
adalah versicom.android.tools.build:gradle
dalamapplication build.gradle
Juga, tambahkan ini ke modul Anda
build.gradle
android { /// Existing Code kapt { generateStubs = true } }
sumber
Tambahkan Penyatuan Data di Proyek android menggunakan ketika Anda telah menggunakan bahasa kotlin.
Langkah-langkah di bawah ini
--Pertama Anda perlu menambahkan plugin di bawah ini
- Penjilidan data kedua diaktifkan benar
Semua poin ini ditambahkan di app.build.gradle setelah menekan "SYNC NOW"
Mari misalnya Anda telah mengedit aktivitas profil lalu bagaimana mendefinisikan variabel yang mengikat di kotlin ??
Di sini, dapatkan penjilidan adalah metode untuk menangani jenis objek penjilidan mana
sumber
Dalam kasus saya, menambahkan
Memecahkan masalah bagi saya. Saya mengabaikannya pertama kali, saya pikir itu tidak relevan dengan masalah:
Tapi sekarang, pengikatan data berfungsi dengan baik.
sumber
Saya ingin membagikan pengalaman saya sendiri. Untuk menggunakan penyatuan data data dengan Kotlin di android studio sudah cukup untuk ditambahkan
Setelah itu "sinkronkan" dan, sangat penting, untuk "membuat Proyek". Setelah itu semua objek Anda akan aktif untuk digunakan.
sumber
Sebelum Anda mencoba menggunakan FragmentDetailsBinding, Anda harus memastikan Anda mengonversi tata letak yang sesuai (fragment_details.xml) ke tata letak pengikatan data dengan membungkus seluruh tata letak di tag induk "" dan memindahkan semua xmlns ke tata letak tag kemudian membangun proyek dan hanya itu
sumber
Cukup keluar dari semua dependensi penyatuan data dan gunakan ini sebagai gantinya
sumber