找不到Android HDPI资源,但它就在那里

时间:2014-02-05 10:55:36

标签: android android-resources nine-patch android-screen-support

在我们的应用上,我从Google Play上看到的下载次数超过50万次报告了以下堆栈跟踪:

Caused by: android.content.res.Resources$NotFoundException: File res/drawable/trans_button_bg.xml from drawable resource ID #0x7f02020b
at android.content.res.Resources.loadDrawable(Resources.java:1961)
at android.content.res.TypedArray.getDrawable(TypedArray.java:653)
at android.view.View.<init>(View.java:1961)
at android.widget.TextView.<init>(TextView.java:458)
at android.widget.Button.<init>(Button.java:108)
at android.widget.Button.<init>(Button.java:104)
... 38 more
Caused by: android.content.res.Resources$NotFoundException: File res/drawable-hdpi/transdark_active.9.png from drawable resource ID #0x7f02020c
at android.content.res.Resources.loadDrawable(Resources.java:2008)
at android.content.res.Resources.getDrawable(Resources.java:601)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:162)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1936)
... 43 more
Caused by: java.io.FileNotFoundException: res/drawable-hdpi/transdark_active.9.png
at android.content.res.AssetManager.openNonAssetNative(Native Method)
at android.content.res.AssetManager.openNonAsset(AssetManager.java:409)
at android.content.res.Resources.loadDrawable(Resources.java:1970)
... 48 more

对我来说,似乎说它试图加载drawable/trans_button_bg.xml这是一个简单的选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/transdark_active" /> <!-- pressed -->
<item android:state_focused="true" 
android:drawable="@drawable/transdark_active" /> <!-- focused -->
<item android:drawable="@drawable/trans_button" /> <!-- default -->
</selector>

调用mdpi,hdpi和xhdpi上可用的9补丁transdark_active.9.png:

enter image description here

这只是一个例子,堆栈,因为我有其他类似的堆栈,其他资产无法加载。

此错误报告的设备明细如下:

  • Galaxy S4(jflte)66.7%
  • Galaxy S2(GT-I9100)13.3%
  • Galaxy Note II(t03g)6.7%
  • Galaxy S2 Plus(s2vep)6.7%
  • 欲望HD(王牌)

所以我的问题:

三星像往常一样搞砸了,还是我在代码上遗漏了什么?

0 个答案:

没有答案