Perbarui catatan:
Contoh di atas berfungsi dengan baik , karena rilis 1.0-rc4 memperbaiki masalah perlunya variabel yang tidak diperlukan.
Pertanyaan asli:
Saya melakukan persis seperti yang dijelaskan dalam dokumentasi dan tidak berhasil:
main.xml:
<layout xmlns:andr...
<data>
</data>
<include layout="@layout/buttons"></include>
....
buttons.xml:
<layout xmlns:andr...>
<data>
</data>
<Button
android:id="@+id/button"
...." />
MyActivity.java:
... binding = DataBindingUtil.inflate...
binding.button; ->cannot resolve symbol 'button'
bagaimana cara mendapatkan tombol?
java
android
data-binding
android-button
android-databinding
Kamil Nekanowicz
sumber
sumber
<include layout="@layout/buttons" android:id="@+id/buttons"/>
. Anda masih membutuhkan id agar dapat menghasilkan bidang publik untuk Anda sehingga Anda dapat mengakses Tampilan Tombol.binding.{id of include tag}.button
bukanbinding.button
. Butuh waktu beberapa saat untuk memahaminya.Contoh Lengkap Mudah
Contoh ini membantu meneruskan nilai ke
<include
& mengakses tampilan yang disertakan dalam kode.Langkah 1
Anda harus
layout_common.xml
, ingin meneruskanString
ke tata letak yang disertakan.Anda akan membuat
String
variabel dalam layout dan merujuknyaString
keTextView
.Langkah 2
Sertakan tata letak ini ke tata letak induk. Berikan
id
ke layout yang disertakan, agar kita bisa menggunakannya di kelas binding. Sekarang Anda dapat meneruskan StringpassedText
ke<include
tag Anda .activity_main.xml
binding.includedLayout.textView
di kelas Anda.Anda dapat meneruskan variabel apa pun ke tata letak yang disertakan seperti di atas.
Catatan Kedua tata letak (induk & disertakan) harus
binding layout
dibungkus dengan<layout
sumber
binding.includedLayout.button.setOnClickListener
akan menjadi alternatif, tetapi bagaimana jika saya ingin menggunakanonClick
atribut dalam XML diri ?OnClickListener
ke tata letak yang disertakan. bahkan Anda dapat memberikan apa pun dalam penjilidan. Periksa jawaban ini, jika Anda butuh bantuan lebih lanjut, beri tahu saya. stackoverflow.com/a/51722829/6891563passedText
. Satu-satunya perbedaan adalah saya tidak menyertakan kode MainActivity karena saya hanya ingin meneruskan sumber daya string di <include> dan membiarkannya seperti itu. Kenapa selalu kosong?Hal menarik lainnya adalah Anda dapat memasukkan variabel ke layout yang diimpor dari binder seperti ini:
sumber
Anda dapat membuat pengikatan Anda berfungsi pada penyertaan Anda hanya dengan menambahkan ID ke dalamnya seperti:
sumber
cukup setel id untuk tata letak include Anda
kemudian
BUTTONSBINDING
adalah res / layout / buttons.xmlsekarang :
sumber