2

static を宣言することにより、ビットマップがキャプチャされ、Activity 間で渡されます。

初めて画像を表示することができます。ただし、2 つ目のアクティビティを破棄して再度作成すると、画像を表示できなくなります。エラーは次のとおりです。

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)

どうもありがとうございます!

4

2 に答える 2

0

静的変数を使用して渡さないでください。この規則は、一般に、アクティビティ間でのデータの共有 (最終的なものではない) に適用されます。

代わりに、インテント バンドルで渡します。

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

これが大きな画像の場合は、ファイルに保存して、インテントでファイル パスを渡すことができます。

于 2012-04-30T09:20:45.827 に答える
0

エラー -

リサイクルされたビットマップを使用しようとしています

このエラーは、リサイクルされたビットマップにアクセスしようとしたときに発生します。したがって、使用している可能性がbitmap.recycle();ある同じビットマップを使用しようとしても、それは不可能です。リサイクルされたビットマップを再び使用することはできません。そこから新しいビットマップを作成するか、ビットマップをリサイクルしないように管理することをお勧めします。

于 2012-04-30T09:21:30.927 に答える