ฉันไม่ได้รับคำตอบที่น่าพอใจ ดังนั้นนี่คือเคล็ดลับที่สรุปความรู้เกี่ยวกับการผูกข้อมูลของฉัน
เคล็ดลับในการแก้ปัญหา DataBinding
อัปเดต
เพื่อให้ได้ข้อผิดพลาดและคำแนะนำที่แม่นยำยิ่งขึ้นเราขอแนะนำอย่างยิ่งให้อัปเดตเวอร์ชันปลั๊กอิน Android Studio และ Gradle เป็นเวอร์ชันล่าสุด เนื่องจากฉันไม่ได้เผชิญกับปัญหามากมายหลังจากเวอร์ชัน AS 3.2
ดูล่าสุด Android สตูดิโอและปลั๊กอิน Gradle ล่าสุด
โซลูชัน Orignal
หลังจากที่ได้อ่านคำตอบนี้คุณจะไม่ได้รับการติดอยู่ในการผูกข้อมูลปัญหารุ่นรถยนต์สำหรับทั้งชั้นเรียนและตัวแปรข้อมูล
ตรวจสอบจุดเหล่านี้ทีละรายการ สิ่งเหล่านี้สามารถทำให้งานของคุณสำเร็จลุล่วง จุดที่ 3 ถึงสุดท้ายมีความสำคัญมากดังนั้นอย่าพลาด
1. ตรวจสอบว่าเปิดใช้งานการผูกข้อมูลหรือไม่
คุณควรเปิดใช้งานการผูกข้อมูลในbuild.gradle
. ถ้าไม่ได้แล้วเพิ่มนี้และซิงค์
android {
...
buildFeatures {
dataBinding true
}
}
2. เค้าโครงตรวจสอบถูกแปลงในรูปแบบการผูก
ตอนนี้ถ้าคุณต้องการสร้างคลาสการผูกข้อมูลคุณควรพันxml layout
ด้วยการผูกข้อมูล ( <layout
แท็ก) อะไรทำนองนี้.
<?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>
พร้อมกับตรวจสอบว่าชื่อตัวแปรการผูกถูกต้องตามในคลาสโมเดลมุมมองหรือไม่
3. สร้างชื่อคลาส Binding โดยอัตโนมัติ?
ควรสร้างคลาสการผูกข้อมูลของคุณหลังจากสร้างเลย์เอาต์การผูก
หากชื่อรูปแบบของคุณอยู่ในกรณีที่งู activity_main.xml
แล้วผูกข้อมูลระดับจะได้รับการสร้างขึ้นในกรณีอูฐActivityMainBinding
เช่น
4. ไม่เห็นคำแนะนำการนำเข้า?
บางครั้งเมื่อคุณพิมพ์ActivityMai...
แล้วมันไม่ได้แสดงข้อเสนอแนะในการที่กรณีที่ตนเองนำเข้า
import <yourpackage>databinding.ActivityMainBinding;
5. อ่าน Build Fail Logcat
คลาสการผูกของคุณและตัวแปรใหม่ในเค้าโครงจะไม่ถูกสร้างขึ้นหากบิวด์ของคุณล้มเหลว ดังนั้นก่อนโครงการ MakeโดยCtrl + F9 (รูปร่าง> โครงการ Make)
- หากการสร้างล้มเหลวให้ดูว่าอะไรคือข้อผิดพลาดโดยปกติแล้วเราจะมีข้อผิดพลาดในช่องเค้าโครง บันทึกข้อผิดพลาดจะระบุหมายเลขบรรทัดข้อผิดพลาดที่มีปัญหา
- การเชื่อมโยงอาจล้มเหลวทำให้เกิดข้อผิดพลาดโง่ๆ เช่นข้อผิดพลาดทางไวยากรณ์หรือการนำเข้าที่ขาดหายไป ในกรณีนั้นคุณจะได้รับ Logcat ที่เต็มไปด้วยข้อผิดพลาดของคลาสที่มีผลผูกพัน แต่คุณควรอ่าน logcat สมบูรณ์เพื่อหาปัญหาที่เหมาะสม
6. ปิดและเปิดโครงการจากล่าสุด
ฉันมักจะทำเช่นนี้เพราะใช้เวลาน้อยกว่าRebuild
/ Make
โครงการมาก
- ปิดโปรเจ็กต์จากไฟล์> ปิดโปรเจ็กต์
- เปิดอีกครั้งจากล่าสุด
โปรดทราบว่าฉันชอบปิดและเปิดจากล่าสุดเพราะใช้เวลาน้อยกว่าการสร้าง / รีสตาร์ท IDEมาก
7. สร้างโครงการใหม่
หากยังไม่สร้างชั้นเรียนของคุณ (บางครั้งเมื่อเราวางไฟล์เค้าโครงแล้วมันจะเกิดขึ้น) จากนั้นสร้างโครงการใหม่จากBuild> Rebuild
( ไม่ใช่สร้างหรือสร้างโครงการ ) มันจะสร้างคลาสการผูกข้อมูลของคุณ ( สร้างเวทมนตร์ให้ฉันใหม่ )
8. มี Android Studio ล่าสุด
หลังจากอัปเดต AS เป็นAndroid Studio 3.2ฉันรู้สึกว่ามีการแก้ไขข้อบกพร่องหลายอย่างในการสร้างข้อมูลโดยอัตโนมัติ ดังนั้นคุณควรมี AS ล่าสุดด้วย
# โซลูชั่นสำหรับ <variables
<data>
<variable
name="item"
type="com.package.Model"/>
</data>
โดยปกติแล้วเมื่อเราใส่ตัวแปรในเลย์เอาต์มันจะสร้าง getter และ setter ของมัน และเราสามารถใช้binding.setItem(item);
และbinding.getItem();
แต่ถ้าคุณไม่เห็นวิธีการเหล่านั้นให้อ่านข้อมูลด้านล่าง
1. ปิดและเปิดโครงการจากล่าสุด
หากคุณสร้างตัวแปรข้อมูล - <variable
ในเค้าโครงของคุณและไม่แสดงตัวตั้งค่าและเริ่มต้นในคลาสการผูกข้อมูลให้ปิดและเปิดจากโครงการล่าสุดของคุณ
2. โครงการทำความสะอาดหลังจากเปลี่ยนชนิด
หากคุณเปลี่ยนประเภทของบางส่วน<variable
ในเค้าโครงของคุณและประเภทตัวตั้งค่า getter ไม่เปลี่ยนแสดงว่าClean project ( Build> Clean Project
)
คำสุดท้าย
สุดท้ายถ้ายังไม่สร้างคลาสผูกพันของคุณเราก็มีอาวุธที่ทรงพลังที่สุดของเรา - รีสตาร์ท Android Studio: D
- ขั้นแรกให้ลองรีสตาร์ทสิ่งนี้จะสร้างตัวแปรของเลย์เอาต์การผูกของฉันเสมอหลังจากรีสตาร์ท
- ถ้ามันไม่ได้ทำงานแล้วโมฆะแคชและเริ่มต้นใหม่
นี่คือทั้งหมดที่ฉันทำเพื่อแก้ไขข้อผิดพลาดในการผูกข้อมูล หากพบปัญหาเพิ่มเติมสามารถแสดงความคิดเห็นได้ที่นี่
dataBinding.enabled
ใน build.gradle ของคุณหรือไม่