我想将所有位图数组元素传递给另一个活动,我可以传递数组列表但我不能传递位图数组,Intent中的位图数组有什么特别的指令吗?
问问题
4108 次
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
Bitmap
extends 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 回答