2011-07-11 216 views
3

我正在使用两项活动。一个活动在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); 
} 
}); 

回答

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"); 
当然

,你可以把任何东西在包也许!字节数组或东西

+0

意图myIntent = new Intent(this,yourOtherActivity.class); 显示错误 “构造函数Intent(new AdapterView.OnItemClickListener(){},Class )未定义” – Saurabh

+0

将yourOtherActivity更改为第二个活动的类名称 –

+0

Sorrry..i没有得到u!我有两个类是MyGridView.java,另一个是MyImageViewActivity.java。我在MyGridView.java中编写的内容,这是正确的方法吗? – Saurabh

3

传递图像URL/URI。

+0

我已经为图像制作了数组。 – Saurabh

+2

如果您可以添加一个简短的伪代码示例,那将会很棒。 –

2

您将参数传递给Intent中的Activity。 如果拍摄的图像从文件,通过该路径的字符串,否则通过位图

startActivity(new Intent(this, YourActivity.class).putExtras(new Bundle().putParcelable("bitmap", Bitmap))) 
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哪些也帮助你。
这里u能知道how to convert bitmap to bytes

1

一旦Grid View项目被点击,获取单击项目,并把它传递给下一个activity作为参数通过PutExtra。在下一个活动中检索额外的图像并将其显示给用户

1

我想你需要使用Intent类。

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

addinfo.putInt("imageid", someid); 

intent.putExtras(addinfo); 
+0

感谢man和plus在目标活动中,我们只需要Bundle bundle = this.getIntent()。getExtras(); int pic = bundle.getInt(“imageid”); – ashim888

0

尝试通过intent.putExtra()传递与图像相关的id,并通过已发布活动的包接收它。

+0

所有我得到的ID都是0.我不知道他们是否正确。 – Saurabh

0

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

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

然后startActivity B.

在活动B

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

这种方式可以通过活动之间的图像。

0

这是我的过程:它很好。 Activity1:

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); 

in 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); 
相关问题