尽管压缩了它,但仍然出现错误 FAILED BINDER TRANSACTION
Still get error FAILED BINDER TRANSACTION although have compressed it
我想 return 图像从 AddMoreClaims 到 AddClaims listView
。当我单击 AddMoreClaims 中的提交 button
时,我收到消息 E/JavaBinder﹕ !!! FAILED BINDER TRANSACTION !!!
.
我使用这个 method 但仍然收到这个烦人的消息!
添加更多声明
Bitmap bmp,photo;
byte[] bytes;
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case RESULT_LOAD_IMAGE:
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK & data != null && data.getData () !=null) {
selectedImage = data.getData();
try
{
photo= MediaStore.Images.Media.getBitmap(getContentResolver(), selectedImage);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, stream);
bytes= stream.toByteArray();
bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
imageView.setImageBitmap(bmp); // image get displayed
}catch(IOException e)
{
e.printStackTrace();
}
}
break;
所选图像将显示在 imageView
AddMoreClaims.
单击提交 button
后,我希望它 return 到 AddClaims。
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent returnIntent = new Intent();
returnIntent.putExtra("BMP", bmp);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
});
这是怎么回事?我错过了什么吗?
我认为你没有在应该压缩的地方压缩 bmp。
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent returnIntent = new Intent();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
returnIntent.putExtra("BMP", bytes);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
});
然后你应该解压缩你需要显示图像的地方
byte[] bytes = data.getByteArrayExtra("BMP");
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
imageView.setImageBitmap(bmp);
不要使用compress large data into intent,这样会消耗更多cpu和时间,
参见 话题。
如果压缩后的数据也超过了binder的限制,也会出现这个错误:!!! FAILED BINDER TRANSACTION !!!
我想 return 图像从 AddMoreClaims 到 AddClaims listView
。当我单击 AddMoreClaims 中的提交 button
时,我收到消息 E/JavaBinder﹕ !!! FAILED BINDER TRANSACTION !!!
.
我使用这个 method 但仍然收到这个烦人的消息!
添加更多声明
Bitmap bmp,photo;
byte[] bytes;
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case RESULT_LOAD_IMAGE:
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK & data != null && data.getData () !=null) {
selectedImage = data.getData();
try
{
photo= MediaStore.Images.Media.getBitmap(getContentResolver(), selectedImage);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.PNG, 100, stream);
bytes= stream.toByteArray();
bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
imageView.setImageBitmap(bmp); // image get displayed
}catch(IOException e)
{
e.printStackTrace();
}
}
break;
所选图像将显示在 imageView
AddMoreClaims.
单击提交 button
后,我希望它 return 到 AddClaims。
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent returnIntent = new Intent();
returnIntent.putExtra("BMP", bmp);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
});
这是怎么回事?我错过了什么吗?
我认为你没有在应该压缩的地方压缩 bmp。
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent returnIntent = new Intent();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
returnIntent.putExtra("BMP", bytes);
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
});
然后你应该解压缩你需要显示图像的地方
byte[] bytes = data.getByteArrayExtra("BMP");
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
imageView.setImageBitmap(bmp);
不要使用compress large data into intent,这样会消耗更多cpu和时间,
参见 !!! FAILED BINDER TRANSACTION !!!