如何将图像数据从一个活动传递到另一个活动?

时间:2011-07-11 07:26:42

标签: android

我正在使用两项活动。一个活动在GridView中显示图片,然后点击GridView中的特定图片,它应该在另一个活动中显示全屏图像。

我怎样才能做到这一点?

我的MyGridView.java

mGridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position,long id) {
    // TODO Auto-generated method stub
    Toast.makeText(getApplicationContext(), "Image"+(position+1),Toast.LENGTH_SHORT).show();
    System.out.println(id);
    Intent i = new Intent(this, MyImageViewActivity.class);
    Bundle bundle = new Bundle();
    bundle.putInt("image", position);
    i.putExtras(bundle);
    startActivityForResult(i, 0);
}
});

9 个答案:

答案 0 :(得分:3)

传递图像URL / Uri,而不是传递原始图像数据。

答案 1 :(得分:2)

您将参数传递给Intent中的Activity。 如果图像来自文件,则传递路径String,否则传递位图

startActivity(new Intent(this, YourActivity.class).putExtras(new Bundle().putParcelable("bitmap", Bitmap)))

答案 2 :(得分:2)

在两个活动之间传递数据:

bytes[] imgs = ... // your image
Intent intent = new Intent(this, YourActivity.class);
intent.putExtra("img", imgs);
startActivity(intent);

然后在YourActivity中:

bytes[] receiver = getIntent().getExtra("imgs");

也可以通过这个link来帮助你。这里你可以知道how to convert bitmap to bytes

答案 3 :(得分:2)

在MyGridView中:( someInteger是一个表示所选图像索引的整数

Intent myIntent = new Intent(this, MyImageViewActivity.class);
Bundle bundle = new Bundle();
bundle.putInt("image", someInteger);
myIntent.putExtras(bundle);
startActivityForResult(myIntent, 0);

在MyImageViewActivity中:

Bundle bundle = this.getIntent().getExtras();
int pic = bundle.getInt("image");

当然,你可以在捆绑中加入任何东西!也许是字节数组或其他东西

答案 4 :(得分:1)

点击Grid View的项目后,获取点击的项目,然后通过activity将其作为参数传递给下一个PutExtra。在下一个活动中,从附加内容中检索图像并将其显示给用户

答案 5 :(得分:1)

我想你需要使用Intent类。

Intent intent = new Intent(YourSourceActivity.this, TargetActivty.class);
Bundle addinfo = new Bundle();

addinfo.putInt("imageid", someid);

intent.putExtras(addinfo);

答案 6 :(得分:0)

尝试通过intent.putExtra()传递与image相关的id,并在已启动的活动中通过bundle接收它。

答案 7 :(得分:0)

在Activity中将图像转换为ByteArray并将其附加到意图

intent.putExtra("img",<ByteArray>);

然后是startActivity B.

在活动B中

Bitmap bm = BitmapFactory.decodeByteArray(getIntent().getByteArrayExtra("img"), 0, getIntent().getByteArrayExtra("img").length);

这样您就可以在活动之间传递图像。

答案 8 :(得分:0)

这是我的过程:它非常好。 活性1:

ByteArrayOutputStream stream=new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG,100,stream);
    byte[] byteArray=stream.toByteArray();
    Intent intent = new Intent(getApplicationContext(), FrameActivity.class);
    intent.putExtra("Image", byteArray);
    startActivity(intent);
FrameActivity.class中的

collageView = (CollageView) findViewById(R.id.btn_collage);
    byte[] byteArray = getIntent().getByteArrayExtra("Image");
    Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
    collageView.setImageBitmap(bmp);