Android: не удалось преобразовать @ drawable / picture в drawable


112

В моей папке с возможностью рисования у меня есть несколько изображений, и все они ссылаются на идеальные, но когда я пытаюсь добавить еще изображения с точно таким же размером в ту же папку и пытаюсь ссылаться на них, появляется сообщение об ошибке «Не удалось преобразовать @ вытягиваемый / картинку в вытягиваемый " . Я пробовал одно и то же изображение с другим именем, и он продолжает давать мне эту ошибку. Я также пробовал это в другом макете XML и то же самое. Также имя изображения было «jack», «abc», «question_mark», как вы можете видеть, есть строгие правила о том, какие символы вы можете использовать, и все же сообщение об ошибке продолжает появляться. Любой совет был бы отличным, как решить проблему, спасибо.

Не удалось преобразовать @ drawable / picture в drawable


2
Все отсортировано по какой-то странной причине, вдруг после еще нескольких щелчков мышки все работает! Мой совет, если у вас возникла эта проблема, - просто перезапустите eclipse и убедитесь, что все ссылки и названия указаны правильно.
Джек Троубридж

2
Иногда просто перестройка проекта с нуля помогает избавиться от этих проблем с Android SDK. Я видел странные случаи, когда он использовал неправильные изображения для всех моих чертежей (без ошибок, но с использованием изображения рядом с правильным для каждого чертежа), вероятно, проблема с идентификатором ссылки.
Гийом

снова -1 Android, +1 Windows
mihai71

4
Для меня это был символ «-» в середине имени файла. После переименования в Android Studio все прошло нормально.
martin.p

Ответы:


200

Перезапустите Eclipse (к сожалению), и проблема исчезнет.


У меня сработало закрытие и повторное открытие проекта в Eclipse. Спасибо, Алия!
stephen.hanson

У меня была эта проблема с drawable-normal-hdpi, но когда мои изображения были в drawable-hdpi - все в порядке.
Яр

@DoctororDrive - возможно, ваша проблема была немного другой. у вас все еще есть ошибка?
Androliyah

4
довольно забавно, что эта проблема существует как в eclipse, так и в студии Android
Mohammad AbuShady

3
закрытие / повторное открытие проекта не помогло мне, но выход / перезапуск студии Android сработали. спасибо Алия.
tmr 08

143

Также проверьте, содержит ли имя ресурса какие-либо недопустимые символы (для меня это было "-" в моем изображении)


Собственный пакет значков Android содержит имена файлов вроде 10-device-access-alarms.png, которыми подавляется Eclipse! Спасибо.
Noumenon

12
Студия Android также подавляется этими именами файлов. Переименование в подчеркивание исправило это для меня.
Cypress Frankenfeld

Для меня это был космический символ ""!
Efreeto

в моем случае
виноват

это было "-" и для меня, как ни странно, студия Android не пометила эту штуку красным цветом ...
Хасиб Зульфикар

55

Если повторный запуск Eclipse не решает проблему, убедитесь, что имя изображения начинается с буквенного символа (нечислового).


4
Спасибо. Android создает переменную drawable id в файле R с именем, которое можно рисовать. Например, если файл начинается с числа, переменная будет начинаться с числа, а это недопустимо в языке Java.
momo

9
Также убедитесь, что он не содержит дефисов (-); например, 'mic-back' недействителен, 'mic_back' в порядке
Маркус

Это была моя проблема. Все значки в пакете на веб-сайте Android имеют ведущие числа.
theblang 08

Это должен быть png? Я пытаюсь использовать jpg.
Игорь Ганапольский

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 является правильным вводом).


Перестройка проекта тоже сделает это.
Майк

Я сделал File -> Invalidate Caches / Restart ..., который тоже сработал (и, вероятно, слишком много).
SMBiggs

3

В Android Studio имя файла ресурсов (изображений) не может начинаться с NUMERICи не может содержать никаких BIGсимволов. Чтобы решить вашу проблему, сделайте так, как сказал Алия. Просто перезапустите свою IDE. Это тоже решило мою проблему.


2

Упростите имя вашего файла, вроде бы какие-то специальные символы в имени файла вызывают сбой. например, измените "my-main-header.png" на "header1.png", не знаю почему, но это работает


2
Это потому, что имена файлов ресурсов преобразуются в идентификаторы ресурсов R.javaи -не являются допустимыми символами для идентификаторов.
laalto

2

Для Android Studio у меня была такая же проблема. Это было вызвано запуском из Linux, то есть файлы не получали расширение автоматически. Добавив вручную .png в конец имен файлов, он сможет распознать тип файла и соответственно загрузить его.

Студия Android может сойти с ума, если вы попытаетесь провести рефакторинг переименования внутри проекта, потому что 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 и размеров устройства. Все изображения имели одно и то же имя, кроме одного. Он был напечатан с ошибкой, и как только я переименовал его как другие имена, моя проблема была решена.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.