NoSuchFieldError: ไม่มีรายการฟิลด์คงที่ View1 ของประเภท I ในคลาส Lcom / disdemo / R $ id; หรือ superclasses


89

ฉันมี module1 (ใน Android Studio) ที่มี listView1 ในactivity_main.xml(แสดงเป็น res ของ module1) MainActivity ของโมดูลนี้กำลังเปิดตัวจาก module2 อื่นในโครงการ Android Studio เดียวกัน

ฉันได้ลองลบ module1 และสร้างใหม่อีกครั้งด้วยไฟล์ res และ java เดียวกัน ฉันยังคงได้รับปัญหาเดียวกัน


ฉันได้เพิ่มโมดูลใน settings.gradle และ build.gradle
Komal Gupta

14
ฉันมีเค้าโครง activity_main.xml ในโมดูลอื่น ๆ ของฉันด้วยดังนั้นฉันจึงได้รับข้อผิดพลาด NoSuchField นี้ ฉันเปลี่ยนชื่อเค้าโครงในหนึ่งในโมดูลของฉันและมันใช้งานได้
Komal Gupta

ฉันหวังว่าฉันจะอ่านความคิดเห็นของคุณย้อนหลัง 48 ชั่วโมงกำลังดิ้นรนกับปัญหานี้ตั้งแต่ 2 วันก่อน !!
มานี

2
กรณีของฉันแตกต่างกันเล็กน้อยเนื่องจากฉันได้ย้ายทรัพยากรสตริงจากโมดูลหนึ่งไปยังอีกโมดูลหนึ่ง ในกรณีของฉันฉันต้องคลิกสร้าง> ล้างใน Android Studio เพื่อแก้ไขปัญหา
Tony Wickham

ใช่สำหรับคุณมันไม่ใช่ปัญหาของไฟล์ทรัพยากรที่ซ้ำกันดังนั้นการสร้าง -> จึงใช้งานได้
Komal Gupta

คำตอบ:


202

ฉันคิดว่าคุณมีเลย์เอาต์ทั้งในไลบรารีและโมดูลที่มีชื่อเดียวกันหรือขยายเลย์เอาต์ xml หลายรายการพร้อมรหัสทรัพยากรซ้ำ


4
ใช่เป็นอย่างนั้น ฉันคิดออกในไม่ช้า แต่สิ่งที่น่าเศร้าคือเสียเวลาไปกับเรื่องนี้เป็นจำนวนมากเนื่องจากข้อความแสดงข้อผิดพลาดไม่เข้าใจง่ายพอ Android Studio ควรเริ่มบันทึกข้อความแสดงข้อผิดพลาดที่ครอบคลุมมากขึ้น
Komal Gupta

7
ฟังดูเข้าท่า! ตอนนี้คุณควรทำเครื่องหมายว่าได้รับการอนุมัติเพื่อให้สามารถช่วยคนอื่นในการแก้ไขปัญหาประเภทนี้
JosephM

1
ถ้าคุณใช้ refactor-rename ของ AS มันจะเปลี่ยนชื่อเหตุการณ์ที่เกิดขึ้นทั้งหมดเช่นactivity_main.xmlควรทำด้วยมือ
บริการ

ฉันได้รับข้อผิดพลาดนี้เนื่องจากสองเค้าโครงที่มีชื่อเดียวกันในแอปและโมดูล ขอบคุณ!
Sandeep Yohans

31

ในทั้งสองโมดูลคุณมีactivity_main.xmlไฟล์. โปรดเปลี่ยนชื่อไฟล์หนึ่งไฟล์

อัปเดต: สิ่งที่ @kundan kamal ต้องการแสดงออกคือคุณมีไฟล์เลย์เอาต์ในทั้งสองโมดูลที่มีชื่อคล้ายกัน


2
มันเสียเวลา 3 ชม. :( คุณช่วยวันของฉัน
karthik kolanji

8

คุณใช้หลายโมดูลและตั้งชื่อเลย์เอาต์ xml ที่เหมือนกันจากนั้นให้ข้อผิดพลาดนี้ดังนั้นโปรดเปลี่ยนชื่อเลย์เอาต์ xml ของคุณ


ขอบคุณ. มันช่วยได้
Vigneswaran A

0

ในตัวระบุกรณีของฉันแตกต่างกัน Build > Rebuild Projectผมกด นี่เป็นเพราะฉันแบ่งออกres/layoutเป็นโฟลเดอร์ย่อยและ AS หยุดสังเกตการเปลี่ยนแปลงของ XML โปรดดูที่ต้องสร้างใหม่หลังจากเปลี่ยนไฟล์เลย์เอาต์ xml ใน Android Studioสำหรับรายละเอียด


0

ข้อผิดพลาดประเภทนี้เกิดขึ้นครั้งเดียวกับฉัน แต่เกิดจากstringทรัพยากร ฉันกำหนดค่าสตริงไว้ในไฟล์แปล แต่ไม่ได้อยู่ในไฟล์ทรัพยากรสตริงเริ่มต้นดังนั้นสิ่งนี้จึงทำให้เกิดความผิดพลาด


0

ทำให้ฉันถูกต้องถ้าฉันไม่ผิด ... ฉันคิดว่าคุณมีชื่อไลบรารีและโมดูลเดียวกันในโครงการของคุณดังนั้นคุณต้องเปลี่ยนชื่อหนึ่งในนั้นจากนั้นก็ใช้ได้ดี


0

สำหรับฉันกฎโปรการ์ดใช้ได้ผล ฉันมีผู้พิทักษ์ระดับสอง อันดับแรกในการพึ่งพาของฉันจากนั้นในแอปของฉัน ต้องทำสิ่งนี้ในการพึ่งพาอาศัยกันของฉัน

รักษาร. สิ่งต่างๆ

-keepclassmembers class **.R$* {
    public static <fields>;
}

รักษาชื่อเมธอดดั้งเดิมทั้งหมดและชื่อคลาสของพวกเขา

-keepclasseswithmembernames class * {
    native <methods>;
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.