朋友您好我想将位图从一个活动传递到另一个活动。我成功地做了,但我的问题是,当位图传递给另一个活动时,它给出了FAILED BINDER TRANSACTION的错误。请各位朋友帮我解决这个问题。 我使用下面的代码将图像传递给另一个活动
Uri selectedImageUri = data.getData();
if(selectedImageUri!=null){
selectedImagePath = getPath(selectedImageUri);
Intent i = new Intent(MainActivity.this, ImageCropperActivity.class);
i.putExtra("mpath", selectedImagePath);
startActivity(i);
我正在获得这样的位图。
if(imagePath != null){
//Toast.makeText(getApplicationContext(), "image path " +imagePath, Toast.LENGTH_LONG).show();
//imgCrop.setImageBitmap(BitmapFactory.decodeFile(imagePath));
mImageUri = Uri.parse(getIntent().getStringExtra("mpath"));
mFileTemp = new File(getIntent().getStringExtra("mpath"));
}
请朋友们帮我解决这个问题。
答案 0 :(得分:1)
首先尝试压缩位图,然后将其传递给下一个活动
使用此
压缩 ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
setresult.putExtra("BMP",bytes);
使用此代码解压缩
byte[] bytes = data.getByteArrayExtra("BMP");
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
--- ---注
There are some limitations as to how much data a bundle can contain. If your bundle or intent extras are too large you can get FAILED BINDER TRANSACTION error.
希望它有所帮助。