android - 在 Activity 之间传递图像

标签 android android-image

位图被捕获并通过声明静态在 Activity 之间传递。

第一次可以显示图像。但是,当第二个Activity销毁再创建时,图片就无法显示了。错误是:

04-30 12:55:28.988: W/dalvikvm(4034): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
04-30 12:55:29.028: E/AndroidRuntime(4034): FATAL EXCEPTION: main
04-30 12:55:29.028: E/AndroidRuntime(4034): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@40531360, 800x480
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.graphics.Canvas.throwIfRecycled(Canvas.java:973)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.graphics.Canvas.drawBitmap(Canvas.java:1062)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:332)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.widget.ImageView.onDraw(ImageView.java:943)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.View.draw(View.java:7014)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1466)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.View.draw(View.java:7126)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.View.draw(View.java:7017)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.widget.FrameLayout.draw(FrameLayout.java:357)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2054)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewRoot.draw(ViewRoot.java:1632)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1335)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1991)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.os.Looper.loop(Looper.java:150)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at android.app.ActivityThread.main(ActivityThread.java:4385)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at java.lang.reflect.Method.invokeNative(Native Method)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at java.lang.reflect.Method.invoke(Method.java:507)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
04-30 12:55:29.028: E/AndroidRuntime(4034):     at dalvik.system.NativeStart.main(Native Method)

非常感谢!

最佳答案

不要使用静态变量传递它,此规则通常适用于在 Activity 之间共享数据(不是最终的)。

相反,将其传递到Intent bundle 中:

intent.putExtra("a bitmap", myBitmap);

如果这是一张大图片,您可能希望将其存储到文件中并在 Intent 中传递文件路径。

关于android - 在 Activity 之间传递图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10378689/

相关文章:

android - 我们可以在 Recyclerview 列表滚动时隐藏/显示相对布局吗?

android - 根据textivew的大小调整图片大小

php - 在android中使用php将图像上传到mySQL服务器

Android - 图像变形效果

android - 将数据推送到应用程序

android - -webkit-溢出-滚动 : touch on android

android - 单击时如何使图像抖动/摆动?

android - 可以在 x 和 y 坐标上跟踪 SeekBar 的拇指吗?

java - 如何避免在每个 Activity 和服务上安装和关闭 'HttpResponseCache'?

android - 实现支持库操作栏时出错