2012-10-12 101 views
5

Tengo una vista de imagen en la vista de lista en la primera actividad, Quiero enviar mi vista de imagen a la segunda actividad en el cliqueo de un elemento de vista de lista.cómo enviar imageview de una actividad a otra

He tratado siguiente código-

convertir una imagen en dibujable 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(); 

El envío a través por intención

Intent intent=new Intent(PicturesList.this,PictureDetail.class); 
       intent.putExtra("Bitmap", byteArray); 
       startActivity(intent); 

En segundo actividad-

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

y

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

Pero el problema es aquí-

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

Esto requerirá imagen estirable y tengo imageview, ¿Puedo convertir mi imageview en dibujable? o cualquier cosa? Cómo enviar imágenes en lugar de dibujables. Alguien ha hecho esto antes.

Así es como me puse la imagen en 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

¿Cómo se configura la imagen para ImageView en el primer lugar? Depende mucho en esa realidad. –

+0

He configurado la imagen en la vista de imagen usando URL. haciendo clic en él quiero mostrarlo en la segunda actividad. – Ani

+0

sí, está bien. Pero mi pregunta es de qué forma está almacenando la imagen de la url. Deberías haber usado dibujable ¿no? –

Respuesta

4

No es necesario para convertir el mapa de bits a una matriz de bytes. El mapa de bits se puede dividir en lotes, por lo que puede usar putParcelable(String, Parcelable) para agregarlo al paquete.

Editar:

Por ejemplo:

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

Luego, en la segunda actividad:

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

puede ulabborate en esto. Bundle extras = new Bundle(); \t \t \t extras.putParcelable ("Bitmap", mapa de bits); ¿está escrito? – Ani

+0

Sí, eso es correcto. He editado mi respuesta. – Magicode

+0

cuántos datos podemos enviar a través de la intención. ¿La imagen de gran tamaño puede crearme problemas? – Ani

0

I cosa que pase Identificación imagen y programar una ID en Siguiente Actividad Imageview P. ej

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

Establecí esa imagen en la vista de imagen. ¿Quiere decir que debería enviar el id de la imagen a la siguiente actividad a través de la intención? – Ani

+0

sí, pase la imagen getID y establezca otra actividad – ckpatel

0

Puede convertir su ImageView Para Bitmap.Try este

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

esto me da una excepción de puntero nulo. – Ani

+0

Verifique el código editado. –

+0

obteniendo la misma excepción de puntero nulo – Ani

Cuestiones relacionadas