可绘制资源$NotFoundException异常 - 但它确实存在?

8

我开始在市场崩溃报告界面看到一组奇怪的堆栈跟踪。据告知,某个可绘制资源不存在。相关的XML如下:

<ImageView
  android:layout_width="13dip"
  android:layout_height="12dip"
  android:src="@drawable/foo"
  />

引起:

java.lang.RuntimeException: 
    Unable to start activity ComponentInfo{com.me.app/com.me.app.MyActivity}: 
    android.view.InflateException: Binary XML file line #51: 
    Error inflating class <unknown>
...
Caused by: android.content.res.Resources$NotFoundException: 
  File res/drawable-hdpi/foo.png from drawable resource ID #0x7f020166
  at android.content.res.Resources.loadDrawable(Resources.java:1732)
  at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
  at android.widget.ImageView.<init>(ImageView.java:118)
  at android.widget.ImageView.<init>(ImageView.java:108)
Caused by: java.io.FileNotFoundException: 
  res/drawable-hdpi/foo.png
  at android.content.res.AssetManager.openNonAssetNative(Native Method)
  at android.content.res.AssetManager.openNonAsset(AssetManager.java:417)
  at android.content.res.Resources.loadDrawable(Resources.java:1724)

现在"foo.png"同时存在于我的"drawable"和"drawable-hdpi"文件夹中。 我已经很长时间没有更改这些可绘制的内容了 - 不确定为什么会出现此错误? 这在多种设备上发生,包括Droids、Nexus Ones等。谢谢。

也许你应该清理一下项目,重新生成R.java文件?这可能是问题的原因。 - Egor
嗨Egor,我肯定在上一个版本发布之前就完成了这个。我检查了R文件,整数值都存在。我认为Android出了点问题。 - user291701
这真的让我很烦恼。我注意到我的新编译的应用程序出现了这些问题。我开始觉得我应该使用资产文件夹编写自己的系统来解决这个问题。然后我就可以有一个漂亮的层次结构来配合它。此外,我还注意到 Lint 错误地标记错误。 - over_optimistic
1
你解决了这个问题吗? - Martynas Jurkus
你的集成开发环境是Eclipse吗?这些bug大多数都出现在Buggiclipse中 :) ! - Farhad
@user291701 你解决了这个问题吗?我也遇到了同样的问题。我尝试过清理项目,而且问题是可以在任何编译环境下复现的。我还尝试了从Bitbucket源代码在另一台电脑上编译,但问题仍然存在!!:(:( - Pedro Teran
2个回答

3

尝试将foo.png放置在其他drawable文件夹中,例如mdpi、xhdpi和xxhdpi。也许这可以帮助解决问题。


0
您可以尝试以下方法:
1- 如果您正在使用Eclipse进行开发,请尝试从调试菜单中选择“Project Clean”。如果您在Intellij中,请尝试“Build”项目。
2- 删除并重新添加foo.png资源。删除后,尝试重新生成R文件,然后重新添加。
3- 将foo.png重命名为其他名称,看看它是否起作用。
4- 尝试删除R文件,因为它会自动生成,可能会解决您的问题。
据我所知,问题出在您项目的R文件上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接