我想将所有Bitmap数组元素传递给另一个活动,我可以传递数组列表但是我不能传递位图数组,是否有任何特殊的Intent位图数组指令?
答案 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