Android中的失败粘合剂交易

时间:2016-03-15 09:41:07

标签: android bitmap

Activity1.class

OnCreate

byte[] mImageByte=getIntent().getExtras().getByteArray(Constant.BYTE_IMAGE);
Bitmap bmp = BitmapFactory.decodeByteArray(mImageByte, 0, mImageByte.length);
    mImageView.setImageBitmap(bmp);

Activity2.class

onClickListener.

当我点击{{1}}时显示错误:FAILED BINDER TRANSACTION !!!
请。救救我!

1 个答案:

答案 0 :(得分:2)

我认为原因是你试图将Bitmap作为额外的Intent。虽然它在理论上是可行的,但我认为图像的大小限制了这种可能性。

如果您想将图片传递给其他活动,请先

  • 将位图保存到文件
  • 将文件路径作为字符串发送到下一个活动
  • 使用下一个活动的文件路径重新创建位图

如果这很困难,请尝试使用Singleton将Bitmap临时存储在内存中。

以下是如何将其保存到磁盘。

首先在清单中添加权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

则...

    File file = new File(Environment.getExternalStorageDirectory() + "imageBitmap" + ".png");
    FileOutputStream fOut = new FileOutputStream(file);

    bitmap.compress(Bitmap.CompressFormat.PNG, 85, fOut);
    fOut.flush();
    fOut.close();

现在将文件名发送到下一个活动。

mIntent.putExtra("filename", "imageBitmap");

在下一个活动中,重新创建位图。

String fName = getIntent().getStringExtra("filename");
String path = Environment.getExternalStorageDirectory() + fName + ".png"
Bitmap bm = BitmapFactory.decodeFile(path);

希望这有帮助。