0

Activity1 というアクティビティがあり、このアクティビティからデフォルトのアクティビティを起動して、カメラまたはライブラリから画像を取得します。

メソッドを使用して完全に画像を取得しますonActivityResult。このメソッドは に実装されていActivity1ます。

これで、取得しActivity1た画像をIntent.putExtra(...)起動時に に入れますActivity2。次のコードを使用してアクティビティを起動します。

//Bitmap handle in Activity1. This holds the bitmap retrieved from camera or gallery.
Bitmap my_bitmap_image;

//Now, on click of a button in Activity1
Intent intent = new Intent(this,Activity2.class);
intent.putExtra("MyBitmapImage",this.my_bitmap_image);
this.startActivity(intent);

さて、奇妙なことが起こります。いつでもカメラでビットマップを取得すると、上記のコードから Activity2 が適切に起動されます。しかし、いつでもギャラリーでビットマップを取得すると、上記のコードから Activity2 が起動することはありません。エラーはありません。コードは何もしないようです。これは何ですか?誰でも助けることができますか?

4

1 に答える 1

0

実行しているとき

intent.putExtra("MyBitmapImage",this.my_bitmap_image);

aを に入れることができるBitmap実装を利用しているという事実を利用しています。ビットマップのソース コード( を検索) によると、はである場合はパーセルできません。ギャラリーの画像が再利用される可能性が非常に高いと思います。ParcelableIntentwriteToParcelBitmaprecycled

解決策は、 true を返すBitmap場合の独自のコピーを作成することです。bitmap.isRecycled()immuatble にも問題がある可能性がありますがBitmap、それを証明することはできません。

于 2013-06-08T13:26:00.580 に答える