Pregunta

Estoy intentando enviar la imagen de la cámara de un intento a otro para mostrarla.Actualmente estoy intentando utilizar el siguiente método,

Una vez capturada la imagen

     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  

     super.onActivityResult(requestCode, resultCode, data);  
     switch(requestCode)
     {
         case CAMERA_RECEIPTREQUEST:  
         if(resultCode== Activity.RESULT_OK)
         {
         BitmapFactory.Options options = new BitmapFactory.Options();
         options.inSampleSize = 8;
         //ImageView jpgView = (ImageView)findViewById(R.id.imageView1);
         Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);  

         Intent imagepass = new Intent(Activity1.this,Activity2.class);
         imagepass.putExtra("imagepass", imagepass);
         startActivity(imagepass);

en segunda actividad

      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.receiptreview);   
        //creating view ids
        createViewIds();  

        Bitmap receiptimage = (Bitmap) getIntent().getExtras().getParcelable("imagepass");
        receipt.setImageBitmap(receiptimage); 
    } 

Pero muestra un error de StackOverFlow,

        at java.util.HashMap$EntrySet.iterator(HashMap.java:944)
        at android.os.Parcel.writeMapInternal(Parcel.java:486)
        at android.os.Bundle.writeToParcel(Bundle.java:1552)
        at android.os.Parcel.writeBundle(Parcel.java:502)
        at android.content.Intent.writeToParcel(Intent.java:5477)

No estoy seguro de si estoy probando el método incorrecto. Estoy buscando alguna muestra o solución para esto.

Gracias por su ayuda chicos.

¿Fue útil?

Solución

usar

         Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);  

         Intent imagepass = new Intent(Activity1.this,Activity2.class);
         imagepass.putExtra("imagepass", receipt );
         startActivity(imagepass);

en lugar de

        Bitmap receipt = BitmapFactory.decodeFile(photo.toString(),options);  

         Intent imagepass = new Intent(Activity1.this,Activity2.class);
         imagepass.putExtra("imagepass", imagepass);
         startActivity(imagepass);

Estás pasando imagepass de instancia de Intent en imagepass.putExtra("imagepass", imagepass); así que pasa Bitmap instancia en imagepass.putExtra("imagepass", receipt );

EDITAR:

para pasar imágenes (mapas de bits) entre actividades en Android, consulte estas publicaciones:

¿Cómo se pasan imágenes (mapas de bits) entre actividades de Android usando paquetes?

¿Cómo puedo pasar un objeto Bitmap de una actividad a otra?

Otros consejos

de lo que puedo ver que pase la intención misma a enviar.Prueba:

imagepass.putExtra("imagepass", receipt);

podría funcionar, todavía nuevo en Android yo mismo.

Podemos probar otra manera de convertir la imagen en la matriz de bytes y luego pasar la matriz de bytes a través de la intención y en la actividad que se llama podemos convertir la matriz de bytes en mapa de bits

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top