如何将位图数组传递给Android中的另一个活动?

时间:2012-11-22 10:22:41

标签: android

  

可能重复:
  How to pass a ArrayList<Bitmap> between activities

我想将所有Bitmap数组元素传递给另一个活动,我可以传递数组列表但是我不能传递位图数组,是否有任何特殊的Intent位图数组指令?

4 个答案:

答案 0 :(得分:1)

Bitmap扩展Parcelable,这意味着您可以提供如下列表:

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

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

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

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

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

答案 1 :(得分: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);

答案 2 :(得分:0)

//传递对象:

   intent.putExtra("MyClass", obj);

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

getIntent().getSerializableExtra("MyClass");

答案 3 :(得分:0)

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