2011-07-11 140 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); 
相關問題