3

PutExtra() で Button に設定した Background Image をインテント オブジェクトとともに別の Class に渡したいと思います。

誰もそれを行う方法を知っていますか?

ありがとうデビッドブラウン

4

6 に答える 6

9

送信者アクティビティ:

Bitmap bitmap = BitmapFactory.decodeResource
                (getResources(), R.drawable.sticky_notes); // your bitmap
        ByteArrayOutputStream bs = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bs);
        intent.putExtra("byteArray", bs.toByteArray());

受信者アクティビティ:

 if(getIntent().hasExtra("byteArray")) {
            ImageView imv= new ImageView(this);
            Bitmap bitmap = BitmapFactory.decodeByteArray(
                    getIntent().getByteArrayExtra("byteArray"), 0, getIntent().getByteArrayExtra("byteArray").length);
            imv.setImageBitmap(bitmap);
          }
于 2016-03-28T08:07:38.220 に答える
2

インテントは 40 キロバイトしか保持できません。画像を 40 キロバイト未満に圧縮できる場合は、extras に入れることができます

于 2012-08-31T06:46:22.630 に答える
1
intent.putExtra("imageData", bitmap)

より良いアプローチは、ビットマップを直接渡すのではなく、リンクを作成することです。

intent.putExtra("image_url",R.drawable.image);
于 2012-08-31T06:52:18.403 に答える
1

これを試して...

最初にビットマップで画像を取得します。

Bitmap tileImage = BitmapFactory.decodeResource(getResources(), R.drawable.floore);

バイト配列に変換します。

 ByteArrayOutputStream stream = new ByteArrayOutputStream();
      photo.compress(Bitmap.CompressFormat.PNG, 100, stream);
      byte[] byteArray = stream.toByteArray();

      Bundle b = new Bundle();
      b.putByteArray("camara",byteArray);

      Intent intent3 = new Intent(this,Second.class);
      intent3.putExtras(b);
      startActivity(intent3);          
于 2012-08-31T06:54:45.670 に答える
0

メモリから削除されないことが確実な場合 (つまり、そのようなビットマップを保存しないでください)を渡すことができますBitmap(実装しているため)。Parcelable

Bitmapそれ自体は、ネイティブ リソースの小さな Java ラッパーにすぎないため、多くのスペースを必要としません。

于 2012-08-31T06:48:15.627 に答える