Android:无法将@drawable/picture 转换为drawable

Posted

技术标签:

【中文标题】Android:无法将@drawable/picture 转换为drawable【英文标题】:Android: failed to convert @drawable/picture into a drawable 【发布时间】:2012-02-11 01:19:04 【问题描述】:

在我的可绘制文件夹中,我有一些图像,它们都参考完美,但是当我尝试在同一个文件夹中添加更多具有完全相同大小的图像并尝试引用它时,会标记一个错误 “无法将 @drawable/picture 转换为可绘制对象”。我尝试过使用不同名称的相同图像,但它一直给我这个错误。我也在不同的 XML 布局和相同的东西中尝试过它。此外,图片的名称是“jack”、“abc”、“question_mark”,正如您所看到的,您可以使用哪些字符的规则非常严格,但仍然不断出现错误消息。任何关于如何解决问题的建议都会很好,谢谢。

无法将@drawable/picture 转换为drawable

【问题讨论】:

出于某种奇怪的原因,所有的排序都发生了,突然点击几下后它就可以正常工作了!如果您遇到此问题,我的建议是重新启动 eclipse 并确保正确引用和命名所有内容。 有时只是从头开始重建项目有助于摆脱这些 android SDK 问题。我见过一些奇怪的情况,它为我的所有可绘制对象使用了错误的图像(没有错误,但是为每个可绘制对象使用正确的图像旁边的图像)可能是参考 id 问题。 再次 -1 Android,+1 Windows 对我来说是文件名中间的字符“-”。重命名后,Android Studio 中一切正常。 【参考方案1】:

重启 Eclipse(很遗憾),问题就会消失。

【讨论】:

在 Eclipse 中关闭和重新打开项目对我有用。谢谢阿利亚! Ia 在 drawable-normal-hdpi 中遇到了这个问题,但是当我的图像在 drawable-hdpi 中时 - 一切正常。 @DoctororDrive - 也许您的问题略有不同。你还有错误吗? 这个问题在 eclipse 和 android studio 中都存在很有趣 关闭/重新打开项目对我不起作用,但退出/重新启动 android studio 确实有效。谢谢阿利亚。【参考方案2】:

还要检查资源名称是否包含任何非法字符(对我来说,它是我的图像中的“-”)

【讨论】:

Android 自己的图标包包含 10-device-access-alarms.png 之类的文件名,Eclipse 会阻塞!谢谢。 Android Studio 也会对这些文件名感到窒息。重命名为下划线为我修复了它。 对我来说是空格字符" "! 空间是我的罪魁祸首 对我来说也是“-”,奇怪的是android studio没有红色标记这个东西......【参考方案3】:

如果重新启动 Eclipse 不能解决问题,请确保图像名称以字母字符(非数字)开头。

【讨论】:

谢谢。 Android 使用可绘制名称在 R 文件中创建可绘制 id 变量。例如,如果文件以数字开头,则变量将以数字开头,这在 Java 语言中是不允许的。 还要确保它不包含破折号 (-);例如'mic-back' 无效,'mic_back' 没问题 这是我的问题。 Android 网站上the pack 中的所有图标都有前导数字。 必须是png吗?我正在尝试使用 jpg 的。【参考方案4】:

file name 必须在 Resources 文件夹中仅包含 abc...xyz 012...789 _ .

例如:

my-image.pngFalse!MyImage.png Falsemy image.pngFalse......

my-xml.xmlFalse!MyXml.xml False我的 xml.xmlFalse......

【讨论】:

【参考方案5】:

这是因为您的图片名称包含“-”符号。唯一允许的字符是 [a-zA-Z0-9_.]

谢谢

【讨论】:

大写字母无效。如果你使用它们,Android Studio 会给出这个错误:错误:任务':app:mergeDebugResources'的执行失败。 > 错误:文件名无效:只能包含小写字母和数字 ([a-z0-9_.])【参考方案6】:

我在 Android Studio 上遇到了同样的问题。无需重新启动 IDE,只需关闭并重新打开项目即可解决问题。 (确保 src 是正确的输入)。

【讨论】:

重建项目也行。 我做了 File -> Invalidate Caches / Restart... ,效果也很好(而且可能是矫枉过正)。【参考方案7】:

在 Android Studio 中,您的资源(图像)文件名不能以 NUMERIC 开头,并且不能包含任何 BIG 字符。要解决你的问题,就照阿利亚说的做。只需重新启动您的 IDE。这也解决了我的问题。

【讨论】:

【参考方案8】:

简化文件名,似乎文件名中的任何特殊字符都会使其打嗝。例如将“my-main-header.png”更改为“header1.png”不知道为什么,但它可以工作

【讨论】:

这是因为资源文件名在R.java 中转换为资源标识符,而- 不是标识符的有效字符。【参考方案9】:

对于 Android Studio,我遇到了同样的问题。它是由从 linux 运行引起的,这意味着文件没有自动接收扩展名。通过手动将 .png 添加到文件名的末尾,它可以识别文件类型并相应地加载。

如果您尝试在项目中重构 rename,Android studio 可能会大吃一惊,因为 android 会立即尝试重新生成 R。我不知道导致错误的确切原因,因为它指向一些看似随机的代码行,在我的例子中是注释。

解决方案:从drawable中删除,在项目之外重命名并重新放入。

【讨论】:

【参考方案10】:

这可能比其他发帖人建议的更简单:如果您有多个项目,请确保您没有在错误的项目中创建 xml 布局文件。

创建后,文件将自动打开,因此您可能不会注意到这一点,并且您认为它位于正确的项目中。显然,任何对可绘制对象或其他资源的引用都是无效的。

是的,我就是这么愚蠢。从现在开始,我将关闭所有未使用的项目:)

【讨论】:

【参考方案11】:

我想我找到了一种无需重新启动 Eclipse 或不关闭项目(它对我有用)就可以让它工作的方法:

在 Eclipse 中重命名 res/ 下的图像文件名 -> 选择文件并按 F2(对我来说是 res/drawable-mdpi/bush-landscape.jpg -> 更改为 bush.jpg)

构建项目(仍然会显示错误)

更改您使用它的图像(我在图形布局中进行了更改。对我来说,这个地方是 LinearLayout/Background/bush-landscape -> 将“bush-landscape”更改为“bush”)

李>

构建项目

【讨论】:

【参考方案12】:

我的图片名称是 21.jpg。我将它重命名为 abc.jpg 并且它起作用了。因此,请确保您的图像名称不以数字开头。但是,以上所有答案也都被接受。

【讨论】:

【参考方案13】:

如果您的命名约定正确,那么只需转到 File -> Invalidate Caches / Restart..

然后按使缓存无效/重新启动..

这对我有帮助。

【讨论】:

【参考方案14】:

在我的例子中,我在不同的文件夹(同名)中有一张图片,用于支持不同的 dpi 和设备尺寸。除了其中一个之外,所有图像都具有相同的名称。它打错了,一旦我像其他名字一样重命名它,它就解决了我的问题。

【讨论】:

以上是关于Android:无法将@drawable/picture 转换为drawable的主要内容,如果未能解决你的问题,请参考以下文章

无法将 Fragments 与 Android 兼容包一起使用

无法将firebase添加到android(颤振)

没有@android:id/text1,Listview 布局将无法工作

Android 相机将无法工作。开始预览失败

Android:无法将@drawable/picture 转换为drawable

无法将 Kotlin Android 扩展添加到我的项目