Android: ไม่สามารถแปลง @ drawable / picture เป็น drawable


112

ในโฟลเดอร์ที่วาดได้ของฉันฉันมีภาพอยู่สองสามภาพและทุกภาพอ้างอิงได้อย่างสมบูรณ์แบบ แต่เมื่อฉันลองเพิ่มรูปภาพอื่น ๆ ที่มีขนาดเท่ากันในโฟลเดอร์เดียวกันและพยายามอ้างอิงมันเกิดข้อผิดพลาด"ไม่สามารถแปลง @ ได้ วาดได้ / รูปภาพลงในสิ่งที่วาดได้ " . ฉันได้ลองใช้รูปภาพเดียวกันโดยใช้ชื่ออื่นและมันก็ทำให้ฉันมีข้อผิดพลาดนั้นอยู่เรื่อย ๆ ฉันได้ลองใช้ในรูปแบบ XML ที่แตกต่างกันและสิ่งเดียวกัน นอกจากนี้ชื่อของภาพยังเป็น "jack", "abc", "question_mark" ดังที่คุณเห็นว่ามีกฎอย่างเคร่งครัดเกี่ยวกับอักขระที่คุณสามารถใช้และยังคงมีข้อความแสดงข้อผิดพลาดปรากฏขึ้น คำแนะนำใด ๆ ที่ดีในการแก้ไขปัญหาขอบคุณ

ไม่สามารถแปลง @ drawable / picture เป็น drawable


2
ทั้งหมดถูกจัดเรียงด้วยเหตุผลแปลก ๆ ทันใดนั้นหลังจากคลิกอีกสองสามครั้งมันก็ได้ผล! คำแนะนำของฉันหากคุณได้รับปัญหานี้เพียงแค่รีสตาร์ทคราสและตรวจสอบให้แน่ใจว่าทุกสิ่งอ้างอิงและตั้งชื่ออย่างถูกต้อง
Jack Trowbridge

2
บางครั้งการสร้างโครงการใหม่ตั้งแต่ต้นก็ช่วยกำจัดปัญหา Android SDK เหล่านี้ได้ ฉันเคยเห็นกรณีแปลก ๆ ที่ใช้ภาพผิดสำหรับสิ่งที่วาดได้ทั้งหมดของฉัน (ไม่มีข้อผิดพลาด แต่ใช้ภาพถัดจากภาพที่ถูกต้องสำหรับทุกสิ่งที่วาดได้) อาจเป็นปัญหาเกี่ยวกับรหัสอ้างอิง
Guillaume

อีกครั้ง -1 Android, +1 Windows
mihai71

4
สำหรับฉันมันคือถ่าน "-" ที่อยู่ตรงกลางของชื่อไฟล์ หลังจากเปลี่ยนชื่อทุกอย่างเรียบร้อยดีใน ​​Android Studio
martin.p

คำตอบ:


200

รีสตาร์ท Eclipse (น่าเสียดาย) และปัญหาจะหมดไป


การปิดและเปิดโครงการอีกครั้งใน Eclipse ใช้ได้ผลกับฉัน ขอบคุณ Aliyah!
stephen.hanson

ฉันมีปัญหานี้กับ drawable-normal-hdpi แต่เมื่อมีภาพของฉันในแบบ drawable-hdpi - ทุกอย่างก็โอเค
Yar

@DoctororDrive - บางทีปัญหาของคุณอาจแตกต่างกันเล็กน้อย คุณยังมีข้อผิดพลาดอยู่หรือไม่?
Androliyah

4
ค่อนข้างตลกที่ปัญหานี้มีอยู่ทั้งใน eclipse และ android studio
Mohammad AbuShady

3
การปิด / เปิดโปรเจ็กต์ใหม่ไม่ได้ผลสำหรับฉัน แต่การออก / รีสตาร์ท android studio ใช้งานได้ ขอบคุณ Aliyah
tmr

143

ตรวจสอบด้วยว่าชื่อทรัพยากรมีอักขระที่ผิดกฎหมายหรือไม่ (สำหรับฉันแล้วมันคือ "-" ในภาพของฉัน)


ชุดไอคอนของ Android มีชื่อไฟล์เช่น 10-device-access-alarms.png ซึ่ง Eclipse จะเปิดใช้งาน! ขอบคุณ
นูเมนนอน

12
สตูดิโอ Android ยังเลือกชื่อไฟล์เหล่านั้นด้วย การเปลี่ยนชื่อเป็นขีดล่างแก้ไขให้ฉัน
Cypress Frankenfeld

สำหรับฉันมันคืออักขระเว้นวรรค ""!
Efreeto

พื้นที่เป็นตัวการในกรณีของฉัน
Saju

มันเป็น "-" สำหรับฉันเช่นกันสตูดิโอ Android แปลก ๆ ไม่ได้ทำเครื่องหมายสิ่งนี้เป็นสีแดง ...
Haseeb Zulfiqar

55

หากการเริ่มต้น Eclipse ใหม่ไม่สามารถแก้ไขปัญหาได้ตรวจสอบให้แน่ใจว่าชื่อภาพขึ้นต้นด้วยอักขระอัลฟา (ไม่ใช่ตัวเลข)


4
ขอบคุณ Android สร้างตัวแปรรหัสที่วาดได้ในไฟล์ R ด้วยชื่อที่วาดได้ ตัวอย่างเช่นหากไฟล์เริ่มต้นด้วยตัวเลขตัวแปรจะขึ้นต้นด้วยตัวเลขและไม่อนุญาตให้ใช้ภาษา Java
momo

9
ตรวจสอบให้แน่ใจว่าไม่มีเครื่องหมายขีดกลาง (-); เช่น "mic-back" ไม่ถูกต้อง "mic_back" ก็โอเค
Markus

นี่คือปัญหาของฉัน ไอคอนทั้งหมดในแพ็คบนเว็บไซต์ของ Android มีตัวเลขนำหน้า
theblang

ต้องเป็น png หรือไม่? ฉันพยายามใช้ jpg
IgorGanapolsky

28

file nameต้องมีเฉพาะabc...xyz 012...789 _ . ในโฟลเดอร์ทรัพยากร

สำหรับอดีต:

my-image.pngคือFalse !
MyImage.png คือFalse !
image.png ของฉัน คือFalse !
ป ...

my-xml.xmlคือFalse !
MyXml.xml คือFalse !
xml.xml ของฉัน คือFalse !
ป ...


25

เนื่องจากชื่อรูปภาพของคุณมีสัญลักษณ์ "-" อักขระที่อนุญาตเท่านั้นคือ [a-zA-Z0-9_.]

ขอบคุณ


1
ตัวอักษรพิมพ์ใหญ่ไม่ถูกต้อง หากคุณใช้ Android Studio จะทำให้เกิดข้อผิดพลาดนี้: ข้อผิดพลาด: การดำเนินการล้มเหลวสำหรับงาน ': app: mergeDebugResources' > ข้อผิดพลาด: ชื่อไฟล์ไม่ถูกต้อง: ต้องมีเฉพาะตัวอักษรพิมพ์เล็กและตัวเลข ([a-z0-9_.])
LightMan

5

ฉันมีปัญหาเดียวกันใน Android Studio ไม่จำเป็นต้องรีสตาร์ท IDE เพียงแค่ปิดและเปิดโปรเจ็กต์ใหม่และจะช่วยแก้ปัญหาได้ (ตรวจสอบให้แน่ใจว่า src เป็นอินพุตที่ถูกต้อง)


การสร้างโครงการใหม่ก็จะทำเช่นกัน
Mike

ฉันทำ File -> ไม่ถูกต้องแคช / รีสตาร์ท ... ซึ่งใช้งานได้ดี (และอาจใช้งานมากเกินไป)
SMBiggs

3

ใน Android Studio ชื่อไฟล์ทรัพยากร (รูปภาพ) ของคุณไม่สามารถขึ้นต้นด้วยNUMERICและต้องไม่มีBIGอักขระใด ๆ ในการแก้ปัญหาของคุณให้ทำตามที่ Aliyah กล่าว เพียงรีสตาร์ท IDE ของคุณ สิ่งนี้ช่วยแก้ปัญหาของฉันได้เช่นกัน


2

ลดความซับซ้อนของชื่อไฟล์ของคุณดูเหมือนว่าอักขระพิเศษใด ๆ ในชื่อไฟล์จะทำให้เกิดอาการสะอึก ตัวอย่างเช่น chaange "my-main-header.png" ถึง "header1.png" ไม่แน่ใจว่าทำไม แต่ใช้งานได้


2
นั่นเป็นเพราะชื่อไฟล์ทรัพยากรถูกแปลงเป็นตัวระบุทรัพยากรในR.javaและ-ไม่ใช่อักขระที่ถูกต้องสำหรับตัวระบุ
laalto

2

สำหรับ Android Studio ฉันมีปัญหาเดียวกันนี้ มันเกิดจากการรันจาก linux หมายความว่าไฟล์ไม่ได้รับนามสกุลโดยอัตโนมัติ ด้วยการเพิ่ม. png ต่อท้ายชื่อไฟล์ด้วยตนเองจะทำให้รู้จักประเภทไฟล์และโหลดตามนั้น

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

วิธีแก้ไข: ลบจาก drawable เปลี่ยนชื่อภายนอกโครงการแล้วโยนเข้าไปใหม่


1

อาจเป็นเรื่องเล็กน้อยกว่าที่ผู้โพสต์อื่นแนะนำ: หากคุณมีหลายโปรเจ็กต์ตรวจสอบให้แน่ใจว่าคุณไม่ได้สร้างไฟล์เลย์เอาต์ xml ในโปรเจ็กต์ที่ไม่ถูกต้อง

หลังจากสร้างไฟล์จะเปิดขึ้นโดยอัตโนมัติดังนั้นอาจไม่มีใครสังเกตเห็นและคุณถือว่าอยู่ในโครงการที่ถูกต้อง เห็นได้ชัดว่าการอ้างอิงถึงสิ่งที่วาดได้หรือทรัพยากรอื่น ๆ จะไม่ถูกต้อง

และใช่ฉันมันโง่ ฉันจะปิดโปรเจ็กต์ที่ไม่ได้ใช้นับจากนี้ :)


1

ฉันคิดว่าฉันพบวิธีที่จะทำให้มันทำงานได้โดยไม่ต้องรีสตาร์ท Eclipse หรือไม่ต้องปิดโปรเจ็กต์ (มันใช้ได้กับฉัน):

  • เปลี่ยนชื่อไฟล์รูปภาพภายใต้ res / ใน Eclipse -> เลือกไฟล์และกด F2 (สำหรับฉันมัน res / drawable-mdpi / bush-landscape.jpg -> เปลี่ยนเป็น bush.jpg)

  • สร้างโครงการ (จะยังคงแสดงข้อผิดพลาด)

  • เปลี่ยนภาพที่คุณใช้ (ฉันเปลี่ยนในรูปแบบกราฟิกสำหรับฉันสถานที่คือ LinearLayout / Background / bush-landscape -> เปลี่ยน "bush-landscape" เป็น "bush")

  • สร้างโครงการ


1

รูปภาพของฉันคือ 21.jpg ฉันเปลี่ยนชื่อเป็น abc.jpg และใช้งานได้ ดังนั้นตรวจสอบให้แน่ใจว่าชื่อภาพของคุณไม่ได้ขึ้นต้นด้วยตัวเลข อย่างไรก็ตามยังยอมรับคำตอบข้างต้นทั้งหมด


1

หากคุณมีรูปแบบการตั้งชื่อที่ถูกต้องให้ไปที่File -> Invalidate Caches / Restart ..

แล้วกดInvalidate Caches / Restart ..

สิ่งนี้ช่วยในกรณีของฉัน


0

ในกรณีของฉันฉันมีรูปภาพในโฟลเดอร์ต่างกัน (ที่มีชื่อเดียวกัน) เพื่อรองรับ dpi และขนาดอุปกรณ์ที่แตกต่างกัน ภาพทั้งหมดมีชื่อเดียวกันยกเว้นภาพใดภาพหนึ่ง พิมพ์ผิดและเมื่อฉันเปลี่ยนชื่อเป็นชื่ออื่นก็จะช่วยแก้ปัญหาของฉันได้

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