2013-07-31 27 views
1

我有下面的代码片断:的Android getDrawable()

final MyActivity activity = (MyActivity)getActivity(); 

,然后稍后:

Drawable d = (Drawable) ((Context)(activity)).getResources().getDrawable(R.drawable.marker_report_path_merge); 
Bitmap b = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); 
LayerDrawable ld = (LayerDrawable) ((Context)(activity)).getResources().getDrawable(R.drawable.marker_report_path_merge); 
ld.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
ld.draw(new Canvas(b)); 

我正在此错误:

07-31 19:59:12.491: E/AndroidRuntime(14341): FATAL EXCEPTION: main 
07-31 19:59:12.491: E/AndroidRuntime(14341): android.content.res.Resources$NotFoundException: File res/drawable-hdpi/marker_report_path_merge.xml from drawable resource ID #0x7f020049 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.content.res.Resources.loadDrawable(Resources.java:1951) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.content.res.Resources.getDrawable(Resources.java:672) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at com.recntrek.util.FragmentReportUtils$2.onClick(FragmentReportUtils.java:56) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.view.View.performClick(View.java:4211) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.view.View$PerformClick.run(View.java:17267) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.os.Handler.handleCallback(Handler.java:615) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.os.Looper.loop(Looper.java:137) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.app.ActivityThread.main(ActivityThread.java:4898) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at java.lang.reflect.Method.invokeNative(Native Method) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at java.lang.reflect.Method.invoke(Method.java:511) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at dalvik.system.NativeStart.main(Native Method) 
07-31 19:59:12.491: E/AndroidRuntime(14341): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #6: <bitmap> requires a valid src attribute 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.graphics.drawable.BitmapDrawable.inflate(BitmapDrawable.java:448) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:881) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.graphics.drawable.LayerDrawable.inflate(LayerDrawable.java:165) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:881) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:818) 
07-31 19:59:12.491: E/AndroidRuntime(14341): at android.content.res.Resources.loadDrawable(Resources.java:1948) 
07-31 19:59:12.491: E/AndroidRuntime(14341): ... 13 more 

但我所有的资源都存在!

我试着在Eclipse中清理构建,没有工作。

任何人都可以帮助我吗?

感谢

编辑:

这里是marker_report_path_merge.xml:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:drawable="@drawable/marker_report_blue" /> 
    <item> 
     <bitmap android:src="@drawable/report_path_merge" 
       android:gravity="center_vertical|center_horizontal" /> 
    </item> 
</layer-list> 
+0

是你的marker_report_path_merge只是PNG或XML? – Desert

+0

也许你有资源res/drawable-ldpi /(或其他),但没有res/drawable-hdpi/ –

+0

marker_report_path_merge是一个图层列表xml文件。我只有资源res/drawable-hdpi/... – Meir

回答

1

为什么你有这个错误是因为你没有在你的<item>标签的真正位图的原因它层叠列表。您可以检查BitmapDrawable类这段代码中,充气方法

final Bitmap bitmap = BitmapFactory.decodeResource(r, id); 
if (bitmap == null) { 
    throw new XmlPullParserException(parser.getPositionDescription() + 
      ": <bitmap> requires a valid src attribute"); 
} 

你张贴的正是这种例外。

相关问题