我想点击Activity 1
带图片的按钮,以显示Activity 2
的图片,但它无效。
活动1:
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
// Bundle bundle = new Bundle();
Drawable drawable=img1.getDrawable();
Bitmap bitmap= ((BitmapDrawable)drawable).getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] b = baos.toByteArray();
intent.putExtra("picture", b);
// String ten = edt.getText().toString();
// bundle.putString("tenkh", ten);
// intent.putExtras(bundle);
startActivity(intent);
活动2:
ImageView image = (ImageView) findViewById(R.id.img2);
TextView txtTen= (TextView) findViewById(R.id.tv1);
Intent goiIntent=getIntent();
Bundle extras = goiIntent.getExtras();
byte[] b = extras.getByteArray("picture");
Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
image.setImageBitmap(bmp);
答案 0 :(得分:1)
您应该向我们展示帮助我们理解问题的逻辑。
但是,我认为你的问题是byte []
很难通过意图。
一种解决方法可能是使用类型为byte[]
的公共静态字段的抽象类。在广播您的意图之前,请在您的数据中设置此字段,并在下一个活动中读取此数据,并且不要忘记在不需要时将字段设置为null
以避免内存泄漏。< /强>
创建一个类ImageHelper
,如下所示:
public abstract class ImageHelper {
public static byte [] image;
}
在您的活动1中,在启动意图之前,而不是intent.putExtra("picture", b);
使用ImageHelper.image = b;
然后在您的活动2中,使用byte[] b = extras.getByteArray("picture");
而不是byte[] b = ImageHelper.image;
。
答案 1 :(得分:-1)
Activity 1
intent.putExtra("BitmapImage", bitmap);
Activity 2
Intent intent = getIntent();
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
ImageView image = (ImageView) findViewById(R.id.img2);
image.setImageBitmap(bitmap);