2012-10-12 115 views
5

我有一個在第一個活動的列表視圖的圖像視圖, 我想發送我的imageview到第二個活動的列表視圖項目的clicl。如何將imageview從一個活動發送到其他

以下代碼 -

轉換繪製的圖像成的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(PicturesList.this,PictureDetail.class); 
       intent.putExtra("Bitmap", byteArray); 
       startActivity(intent); 

在第二活動 -

Bundle extras = getIntent().getExtras(); 
     byteArray = extras.getByteArray("Bitmap"); 

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
         imageview.setImageBitmap(bmp); 

但問題是這裏 -

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 

這需要繪製的圖像和我的ImageView, 我可以將我的ImageView爲繪製?還是其他什麼? 如何發送imageview而不是drawable。 以前有人做過這個。

這是我如何imageview的

new AsyncTask<Void,Void,Void>() { 
      @Override 
      protected Void doInBackground(Void... params) { 


       try { 
        URL newurl = new URL("http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png"); 
        bitmap= BitmapFactory.decodeStream(newurl.openConnection().getInputStream()); 
        //bitmap = Bitmap.createScaledBitmap(bitmap, 50,50, true); 
       } 
       catch (MalformedURLException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      // bitmap=imageLoader.DisplayImage("http://farm3.static.flickr.com/2199/2218403922_062bc3bcf2.jpg", imageview); 
       //bitmap = Bitmap.createScaledBitmap(bitmap, imageview.getWidth(), imageview.getHeight(), true); 
       return null; 
      } 
      @Override 
      protected void onPostExecute(Void result) { 
       super.onPostExecute(result); 
       imageview.setImageBitmap(bitmap); 
      } 
     }.execute(); 
+0

你如何將圖片設置爲在首位的ImageView?這取決於一大堆的實際。 –

+0

我使用URL在imageview上設置圖像。點擊它我想在第二個活動中顯示它。 – Ani

+0

是的,那很好。但我的問題是以什麼形式存儲來自url的圖像。你應該使用可繪製的權利? –

回答

4

你並不需要將位圖轉換爲字節數組設置圖像。位圖是可以parcelable的,所以你可以使用putParcelable(String, Parcelable)將它添加到Bundle中。

編輯:

例如:

Bundle extras = new Bundle(); 
extras.putParcelable("Bitmap", bmp); 
intent.putExtras(extras); 
startActivity(intent); 

然後在第二個活動:

Bundle extras = getIntent().getExtras(); 
Bitmap bmp = (Bitmap) extras.getParcelable("Bitmap"); 
+0

你可以詳細說明這一點。 Bundle extras = new Bundle(); \t \t \t extras.putParcelable(「Bitmap」,bitmap);它是寫嗎? – Ani

+0

是的,沒錯。我編輯了我的答案。 – Magicode

+0

我們可以通過意向發送多少數據。大尺寸圖像會給我造成問題嗎? – Ani

0

我的事情你通過圖像ID,並在接下來的活動集ID ImageView的 例如

GEt ID ((ImageView) v).getId(); 
SET ID imageView.setImageResource(imgId); 
+0

我已將該圖片設置爲imageview。你的意思是我應該通過intent將imageview id發送到下一個活動。 – Ani

+0

是的,傳遞圖像的getID並設置其他活動 – ckpatel

0

你可以把你的ImageView要Bitmap.Try這

Bitmap bitmap = Bitmap.createBitmap(imageView .getMeasuredWidth(),imageView .getMeasuredHeight(), Bitmap.Config.RGB_565); 
Canvas canvas = new Canvas(bitmap); 
ImageView .draw(canvas); 
+0

這給我空指針異常。 – Ani

+0

檢查編輯後的代碼。 –

+0

仍然得到相同的空指針異常 – Ani

相關問題