0

BitmapまたはDrawableをあるアクティビティから別のアクティビティに渡したいのですが、今これを行っています:

            EventPhoto photo = (EventPhoto) parent.getItemAtPosition(position);

            BitmapDrawable test = (BitmapDrawable) photo.getDrawable();
            Bitmap bitmap = test.getBitmap();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.PNG, 0, baos); 
            byte[] b = baos.toByteArray();

            Intent intent = new Intent(EventDetailActivity.this, ImageExpandActivity.class);
            System.out.println(b.length); //B LENGTH = 908k
            intent.putExtra("image",b);
            startActivity(intent);

私の問題は、putExtraを使おうとすると、彼は例外を送信せず、何も送信しませんが、応答せず、Androidがアプリケーションを強制終了します。なぜこれが発生するのですか?小さな画像を渡すとすべてが機能するので、サイズについて考えています。

私はこのようないくつかの解決策を探しています:あるアクティビティから別のアクティビティにビットマップを渡す方法 ですが、putExtraを使用したいのですが、何かアイデアはありますか?

ありがとう

4

2 に答える 2

0

このデータが一時的に必要な場合は、ディスク (ファイル、データベースなど) にはアクセスしません。私はあなたと同じアプローチをとります。

そのためのオプションがいくつかあります。アプリに適したものを選んでください。

  • public static クラスで、コード全体で使用できます。この種のヘルパーは、共有設定や必要なグローバル情報などを管理するのに便利です

  • Singleton、このパターンは前のものと非常によく似ています。主な違いは、この場合、クラスのインスタンスが 1 つしかないことです (静的ではインスタンスはなく、変数とメソッドにアクセスするだけです)。このパターンは、アプリのライフサイクル全体で参照インスタンスが必要な場合に役立ちます。

  • アプリケーションを拡張します。これは、他の2つよりもさらに一歩進んでいます。ライフサイクル全体で利用できるアプリケーションのインスタンスがあります。通常、プッシュ、エラー通知、サービスなど、他のものをそこで管理したい場合があります。

于 2012-08-10T21:31:08.967 に答える
0

別の解決策が見つからないので、これで解決しました: How to pass bitmap from one activity to another

以前に static 属性で指定したのと同じリンク:

public static Bitmap getBitmap(){
   return bitmap;
}
于 2012-08-15T12:43:12.423 に答える