【发布时间】:2011-09-24 13:35:07
【问题描述】:
我有一个运行良好的应用程序,然后我发布了一个更新,现在突然有些用户无法膨胀主视图.. 它正在因第 28 行的 XML 膨胀而死亡,嵌套异常
Resources$NotFoundException: 来自 Drawable 资源 ID #0X10200004 的文件
在引用 @drawable/pl 的 Binary XML inflate 的第 28 行
pl.bmp文件在res/drawable目录下,没有损坏,所以资源存在。
我能看到的唯一一件奇怪的事情是生成的 R.java 文件引用了这个 ID 为 #0X7F0200009 的可绘制对象,并且根本没有文件引用 ID 以 #0X1.... 开头的文件。 . 所以我不确定这些特定用户如何或为什么会将该 ID 作为可绘制对象的参考。 R.Java 可绘制类中有一个#0X7f0200004,但它是一个完全不同的图形。
这肯定发生在一些升级的人身上,我怀疑也发生在一些购买新的人身上。我无法在我可以访问的任何设备或模拟器上复制这种行为,但显然某些人正在发生这种情况。
有人有什么想法吗?升级是否没有选择正确的 R.java 文件?这怎么可能呢?起初我认为这可能是文件名冲突,因为早期版本将 p 作为 bmp 并在此开始的版本中将其更改为 png,但我确保在构建之前删除 pl.bmp,随后将其重命名为 pl,因此,即使旧的 p 文件 .bmp 和 .png 以某种方式在设备上也不可能发生冲突,但这似乎不是问题。
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
-
图像有多大(像素大小和文件大小)?如果是一个非常大的图像,超出了设备可用的位图内存(这对于不同的设备来说是不同的)那么你会得到这样的错误,本质上是找到了资源本身但无法加载到程序中,然后程序报错它找不到资源。
-
图片非常小..像20x20和1k以下的大小所以不是大小限制。
-
我确实将保存此图像的元素也放入了水平滚动视图中,当问题开始时,我不知道为什么会影响通货膨胀。这不是每个用户,但绝对是一个合理的数字,这令人愤怒。
-
好吧,我做了一些进一步的调查,现在我比以往任何时候都更加困惑。结果发现它因notfoundexception而死的行如下:“setButtonDrawable(android.R.id.empty);”这对我来说毫无意义......它怎么能找不到与作为操作系统一部分的 ID 相关联的可绘制对象,突然对于那些一切正常的用户来说?所以事实证明它根本与我的图像无关,但是这条线..所以我不得不假设以某种方式将此元素嵌套在水平滚动视图中以某种方式解决了某些硬件设备的操作系统中的错误。啊!
-
我已将上述内容更改为使用透明可绘制对象,而不是作为操作系统一部分的 id.clear 提供,到目前为止,我还没有收到任何关于错误的进一步报告。 . 但昨天是星期天,所以我不知道有多少人升级了等。由于我无法在任何设备或模拟器上复制问题,我不能说问题已解决,如果这不起作用,我不知道该怎么做,为什么将一个元素移动到 XML 中的子视图中会突然使充气机找不到作为操作系统一部分的对象/可绘制对象,并且之前发现它非常好?