2012-04-03 25 views
1

我有一個應用程序,允許用戶從本地圖庫中選擇圖片,然後在圖像視圖窗口小部件中顯示此圖像。我如何通過android中的活動發送圖像

我的問題是: 1我必須發送這個圖片到其他活動。我該怎麼做。

2,在接收器的工作我應該表現出它在圖像視圖widget作爲圖像不鏈接或東西

我想這個代碼,但它給了我一個運行時錯誤

Bitmap image = Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.RGB_565); 
     view.draw(new Canvas(image)); 
     String url = Images.Media.insertImage(getContentResolver(), image,"title", null); 

回答

0

只要按照下面的步驟...

開放的URI = NULL;任何點擊事件 1)使用下面的代碼打開原生圖庫

Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent, "Select Picture"),0); 

這將打開圖庫中選擇圖片將返回到您的活動。 OnActivity結果。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
switch (requestCode) { 
case 0: 
    if (resultCode == RESULT_OK) { 
    try { 
    uri = Uri.parse(data.getDataString()); 
    imageView.setImageUri(uri); 
} catch (FileNotFoundException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} catch (IOException e) { 
// TODO Auto-generated catch block 
    e.printStackTrace(); 
    }} 
    break; 
    } 
} 

2)也強似的圖像可以通過URI到下一個活動,你傳遞字符串在礦井secont活動,您使用的意圖得到它。

Intent i = new Intent(this, Second.class); 
i.putExtra("URI", uri.toString()); 
startActivity(i); 

,並在第二個活動現在

String uri = getIntent().getStringExtra("URI"); 

你有串只需將它設置爲圖像視圖像下面

imageView.setImageUri(Uri.parse(uri)); 
+0

我已經做了畫廊的一部分,但我需要將它發送到另一個活動,並將其顯示爲圖像。你可以請給出執行這一步驟的代碼。 – Maha 2012-04-03 16:55:30

0

使用意圖putExtra和發送在Acvtivity1和第二活動選擇的圖像用戶的URI使用意圖getExtra讀取URI

參考此答案https://stackoverflow.com/a/7325248/308251

+0

好的這是我如何發送正常值,但圖像呢?我認爲我應該做一些轉移到位圖,然後將其轉換爲普通的圖像,以顯示它在第二個活動,請給我的代碼做這一步 – Maha 2012-04-03 16:58:39

+0

但爲什麼你需要發送位圖,你可以發送uri選定的位圖它更優化,有沒有任何用例,爲什麼你更喜歡發送位圖? – 2012-04-03 17:01:48

0

是的,你可以通過putExtra方法。

Intent i = new Intent(this, Second.class); 
Bitmap b; // your bitmap 
ByteArrayOutputStream bs = new ByteArrayOutputStream(); 
b.compress(Bitmap.CompressFormat.PNG, 50, bs); 
i.putExtra("Arraybyte", bs.toByteArray()); 
startActivity(i); 

並在Second.java

if(getIntent().hasExtra("Arraybyte")) { 
ImageView iv= new ImageView(this); 
Bitmap b = BitmapFactory.decodeByteArray(
    getIntent().getByteArrayExtra("byteArray"),0,getIntent().getByteArrayExtra("byteArray").length);   
iv.setImageBitmap(b); 

}

0

也許這是不是你要找的,這有點窮,但當我需要在活動之間傳遞對象時挽救了我的生命。

public class MagatzemImg { 
     private static MagatzemImg instance = null; 
     private static Bitmap img; 

     public MagatzemImg(){ 
      img=null; 
     } 

     public static MagatzemImg getInstance() { 
      if (instance == null) 
      instance = new MagatzemImg(); 
      return instance; 
     } 

     public static void setImg(Bitmap im){ 
      img = im; 
     } 
     public static Bitmap getImg(){ 
      Bitmap imgAux = img; 
      img = null; 
      return imgAux; 
     } 
    } 

然後從新的活動:

MagatzemImg.getInstance(); 
    image = MagatzemImg.getImg(); 

可以「保證」,以使圖像通過putExtra("image",true)或你喜歡,如檢查,如果別的靜態類內部存在的新活動「圖像」爲空。

相關問題