0

可能重复:
如何在活动之间传递 ArrayList<Bitmap>

我想将所有位图数组元素传递给另一个活动,我可以传递数组列表但我不能传递位图数组,Intent中的位图数组有什么特别的指令吗?

4

4 回答 4

1

尝试以下解决方案来解决此问题。

1)首先将图像转换为字节数组,然后添加到arraylist,然后将此arraylist传递给Intent,并在下一个活动中从bundle中获取arraylist并转换为Image(Bitmap)并设置为ImageView。

将位图转换为字节数组:-

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

然后将此字节数组添加到arraylist。

将字节数组转换为位图图像:-

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);

image.setImageBitmap(bmp);
于 2012-11-22T10:41:30.360 回答
1

Bitmapextends Parcelable,这意味着您可以提供这样的列表:

    ArrayList<Bitmap> bitmapList = new ArrayList<Bitmap>();
    // Poupulate list here

    Intent intent = new Intent();
    intent.putParcelableArrayListExtra("list", bitmapList);

然后,您可以Bitmap[]在接收活动中将其转换为 a:

Bitmap[] bitmapArray = bitmapList.toArray(new Bitmap[bitmapList.size()]);

但是请记住,在您的意图中放入太多东西通常是不好的做法。最好存储您的数据(数据库、文件系统、单例...)并传递 URI 或 ID。

于 2012-11-22T10:25:30.230 回答
0

将位图数组用作静态并在另一个活动中使用 classname.bitmaparray

于 2012-11-22T10:46:34.277 回答
0

//传递对象:

   intent.putExtra("MyClass", obj);

// 在第二个 Activity 中检索对象

getIntent().getSerializableExtra("MyClass");
于 2012-11-22T10:32:52.373 回答