โอเคนี่เริ่มรบกวนฉันจริงๆ ข้อผิดพลาดนี้ปรากฏขึ้นในลักษณะพิเศษไม่ใช่เชิงตรรกะ
ให้ฉันเริ่มต้นด้วยการบอกว่าฉันได้ดูคำถามอื่น ๆ เกี่ยวกับข้อผิดพลาดนี้แล้ว Google ก็เช่นกัน เท่าที่ฉันสามารถบอกได้ปัญหาที่คล้ายกันส่วนใหญ่เกิดขึ้นเนื่องจากผู้คนอ้างถึงString
ทรัพยากรหรือสิ่งอื่นที่ไม่อยู่ในไฟล์เลย์เอาต์เดียวกันพวกเขาใส่ '+' ใน '@ id +' ผิดหรือสิ่งที่คล้ายกัน
ปัญหาที่ฉันพบเกิดขึ้นในไฟล์รูปแบบ. xml ที่มีไฟล์RelativeLayout
. ซึ่งประกอบด้วย a TableLayout
, สองLinearLayout
s ที่มีข้อความบางส่วนและสุดท้ายProgressBar
คือ สิ่งที่ฉันต้องการคือแถบความคืบหน้าเพื่อให้สอดคล้องกับเลย์เอาต์แบบสัมพัทธ์โดยใช้android:layout_alignParentBottom="true"
แล้วจัดแนวเลย์เอาต์เชิงเส้นสองแบบเหนือแถบความคืบหน้า (เลย์เอาต์เชิงเส้นด้านล่างจัดแนวเหนือแถบความคืบหน้าส่วนอีกอันที่จัดแนวเหนือเลย์เอาต์เชิงเส้นด้านล่าง)
มันควรจะง่ายพอและดูราวกับว่ามันใช้งานได้กล่าวคือมุมมองกราฟิกจะแสดงผลลัพธ์ที่ต้องการ อย่างไรก็ตามและนี่คือปัญหาที่เกิดขึ้น Eclipse ทำให้ฉันมีข้อผิดพลาดเกี่ยวกับเลย์เอาต์เชิงเส้นสองแบบ
"ข้อผิดพลาด: ไม่พบทรัพยากรที่ตรงกับชื่อที่กำหนด (ที่" layout_above "พร้อมค่า" @ id / LinearLayout_acc ")"
และข้อผิดพลาดเดียวกันสำหรับเค้าโครงเชิงเส้นอื่น ๆ ที่อ้างถึงแถบความคืบหน้า ฉันตรวจสอบมากกว่าสามครั้งแล้วว่าไม่มีการพิมพ์ผิด (มีรหัสอยู่ในชื่อแพ็กเกจ R.java ด้วย) และฉันได้ลองทำความสะอาดโครงการหลายสิบครั้งแล้ว
ฉันไม่ได้รับข้อผิดพลาดขณะบันทึก (และการสร้างอัตโนมัติ) จนกว่าฉันจะตัดสินใจเรียกใช้โครงการ สิ่งที่แปลกอีกอย่างคือเมื่อฉันอ้างถึงเค้าโครงเชิงเส้นด้านล่างจากแถบความคืบหน้าแทนที่จะเป็นเค้าโครงเชิงเส้นด้านบนฉันไม่พบข้อผิดพลาด!
ไฟล์เลย์เอาต์ของฉัน:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background_activity" >
<TableLayout
... />
<LinearLayout
android:id="@+id/LinearLayout_dist"
android:layout_above="@id/LinearLayout_acc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp" >
<TextView
... />
<TextView
... />
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout_acc"
android:layout_above="@id/ProgressBar_statusScreen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" >
<TextView
... />
<TextView
... />
</LinearLayout>
<ProgressBar
android:id="@+id/ProgressBar_statusScreen"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_margin="16dp" />
</RelativeLayout>
โปรดช่วยฉันไม่รู้ว่าอะไรทำให้เกิดข้อผิดพลาดนี้!
แก้ไขด้วยคำตอบ
Shrikant มาพร้อมกับวิธีแก้ปัญหาในการเปลี่ยนลำดับการปรากฏในไฟล์เค้าโครงเพื่อให้องค์ประกอบอ้างอิงเฉพาะองค์ประกอบอื่น ๆ ที่กำหนดไว้แล้วเมื่ออ่านข้อมูลอ้างอิง
นอกจากนี้ในขณะที่คนอื่นโพสต์การเปลี่ยน@id/
เป็น@+id/
แม้ในข้อมูลอ้างอิงจะเป็นการลบข้อความแสดงข้อผิดพลาด ตามที่ Marco W. เขียนไว้ในเธรดนี้สิ่งนี้คือคุณต้องใช้@+id/
ในครั้งแรกที่มีการกล่าวถึงแต่ละ id จากนั้นจึงใช้ใน@id/
ภายหลังแม้ว่าครั้งแรกอาจไม่ใช่คำจำกัดความก็ตาม
ฉันทำการออกแบบส่วนใหญ่และตั้งค่า id ที่อ้างถึงในโปรแกรมแก้ไขกราฟิกของ Eclipse ดังนั้นโค้ดที่ทำให้เกิดข้อความแสดงข้อผิดพลาดจึงถูกแทรกโดยอัตโนมัติ อาจจะเป็นบั๊กใน Eclipse