我有ImageView
的活动,我希望在其他活动中发送此ImageView
,我该怎么办?
答案 0 :(得分:2)
您实际上无法传递ImageView本身。但是,您可以传递它的值,然后在其自己的新ImageView中重新加载它。
您可以在intent中的Activity之间传递数据。
这就是这样的例子;
Intent intent = new Intent(this, MyNewActivity.class);
intent.putExtra("EXTRA_IMAGEVIEW_URL", myImageViewData);
startActivity(intent)
然后在启动(MyNewActivity)中,您可以再次获取该数据;
String imageview_url = getIntent().getStringExtra("EXTRA_IMAGEVIEW_URL");
使用适合您的数据类型的任何方法。
编辑说明: 此解决方案假设您发送一个简单的指针指向图像,而不是图像本身。您可以从加载位置,可绘制ID或文件系统中的图像路径发送URL或URI。实际上,不要试图将整个图像本身作为base64,二进制文件或其他任何内容发送。
答案 1 :(得分:0)
你可以子类化imageview并实现可序列化的接口并以这种方式传递它,或者你可以将imageview的资源id(int)传递给另一个活动然后用这个资源id加载该活动的imageview,或者你使imageview静态然后在您只需通过FirstClass.imageView
调用它的其他活动答案 2 :(得分:0)
您不能在活动之间传递图像视图。
假设您需要将图像从一个活动传递到另一个活动。
您可以通过将位图转换为bytearray来传递位图,如下所示
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
将字节数组传递给intent: -
Intent intent = new Intent(FirstActivity.this, NextActivity.class);
intent.putExtra("picture", byteArray);
startActivity(intent);
在NextActivity中从Bundle获取字节数组并转换为位图图像: -
Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("picture");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(bmp);
答案 3 :(得分:0)
通过将位图转换为bytearray来传递位图可以正常使用