2012-05-15 4 views
0

У меня есть 4 вида деятельности A, B, C и D.Почему я получаю Canvas: пытается использовать переработанную растровую карту android.graphics?

Деятельность A имеет меню. Один из его вариантов открывает Activity D, который имеет вид списка. Деятельность A открывает активность B кнопкой. Действие B открывает действие C кнопкой.

Активность C имеет 4 ImageViews, которые я их перерабатываю на финише.

Когда я делаю следующий сценарий каждая вещь в порядке:

A -> B --back к -> A --click меню для перехода к D -> OK

Когда Я делаю следующий сценарий: я получаю это фатальное исключение:

A -> B -> C -back to -> B --back to -> A --click Menu to go to D ->get исключение

Нет реляционизма n между действиями D и C. но почему я получаю это исключение здесь ????

A->B->C (using buttons) 

A-> D (using menu) 

05-15 11:33:49.600: E/AndroidRuntime(2722): FATAL EXCEPTION: main 
05-15 11:33:49.600: E/AndroidRuntime(2722): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected] 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.graphics.Canvas.throwIfRecycled(Canvas.java:1038) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.graphics.Canvas.drawBitmap(Canvas.java:1142) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:393) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.widget.ImageView.onDraw(ImageView.java:924) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.View.draw(View.java:10983) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.drawChild(ViewGroup.java:2887) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.drawChild(ViewGroup.java:2885) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.widget.ListView.drawChild(ListView.java:3223) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.widget.AbsListView.dispatchDraw(AbsListView.java:2092) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.widget.ListView.dispatchDraw(ListView.java:3218) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.View.draw(View.java:11088) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.widget.AbsListView.draw(AbsListView.java:3398) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.drawChild(ViewGroup.java:2887) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.View.draw(View.java:10986) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.drawChild(ViewGroup.java:2887) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.drawChild(ViewGroup.java:2885) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.drawChild(ViewGroup.java:2885) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2489) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.View.draw(View.java:10986) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.widget.FrameLayout.draw(FrameLayout.java:450) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2126) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewRootImpl.draw(ViewRootImpl.java:2026) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1634) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.os.Looper.loop(Looper.java:137) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at java.lang.reflect.Method.invoke(Method.java:511) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-15 11:33:49.600: E/AndroidRuntime(2722):  at dalvik.system.NativeStart.main(Native Method) 

ответ

0

Я заметил, что я не должен использовать одинаковые ресурсы изображений для разных видов деятельности, в то время как один из них перерабатывает его растровое изображение.

Я использовал тот же ресурс изображения (img01.png) для ImageViews в оба активности С и активностью Д.

Я изменил ресурс изображения активности С до img02.png и проблема решена.

Но я не знаю его логической причины.

0

Просто потому, что вы скопировали из деятельности не означает, что его нет. Если вы собираетесь перерабатывать растровые изображения, убедитесь, что они не используются. Вы можете установить ImageView, чтобы иметь другой (возможно, пустой) Drawable, когда вы перерабатываете растровое изображение.

+0

Я заметил, что использую то же изображение по умолчанию из ресурсов для изображений Activity C и изображений Activity D. когда я удалил этот ресурс из проблемы ListView D's ListView. Зачем? – breceivemail

 Смежные вопросы

  • Нет связанных вопросов^_^