3

我想将我在 PutExtra() 中设置为按钮的背景图像与意图对象传递给另一个类。

任何人都可以知道该怎么做吗?

谢谢大卫布朗

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

Intent 只能保留 40 KB。如果您可以压缩小于 40 KB 的图像 - 您可以将其放入附加文件中

于 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 回答
0

传递可能非常大的文件时要小心,例如照片或图库文件。即使压缩它,大小也可能超过 putExtra 的可接受限制。我建议从图库中发送文件的图像链接或文件路径。在我的应用程序中,我总是尽可能地压缩我的文件,但总是有一个应用程序崩溃。

Intent intent = new Intent(getActivity(), PhotoViewActivity.class);
intent.putExtra("url", url);
//OR file path
intent.putExtra("path", path);
startActivityForResult(intent,PHOTO_VIEW_REQUEST);

在那种情况下,在 PhotoViewActivity

    String url = getIntent().getStringExtra("url");
    String path = getIntent().getStringExtra("path");
    if(url != null && !url.isEmpty()){
        //Get using Picasso or other framework
    }else if(path != null && !path.isEmpty()){
        //In my case I transform in Bitmap
        //see this link for more detail : https://stackoverflow.com/questions/16804404/create-a-bitmap-drawable-from-file-path

    }else{
        //Throw exception and close activity
    }

如何在 Bitmap 中转换路径: 从文件路径创建 Bitmap/Drawable

于 2019-12-14T01:28:00.513 回答