Domanda

Sto cercando di inviare l'immagine della fotocamera da un intento a un altro intento di mostrare.Attualmente sto provando usando il seguente metodo,

Una volta acquisita l'immagine

     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);
.

nella seconda attività

      @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); 
    } 
.

Ma mostra l'errore di 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)
.

Non sono sicuro se sto provando un metodo sbagliato. Sto cercando qualche campione o soluzione a questo.

Grazie per il tuo aiuto ragazzi.

È stato utile?

Soluzione

Usa

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

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

invece di

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

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

Stai passando Imagepass Intent Imagepass in imagepass.putExtra("imagepass", imagepass); Inserire l'istanza Bitmap in imagepass.putExtra("imagepass", receipt );

Modifica:

Per il passaggio delle immagini (bitmap) tra le attività in Android vedi questi messaggi:

Come passano le immagini (bitmaps) Tra le attività Android utilizzando i bundle?

Come posso passare aOggetto bitmap da un'attività all'altra

Altri suggerimenti

Da ciò che posso vedere il tuo passaggio dell'intento stesso da inviare.Prova:

imagepass.putExtra("imagepass", receipt);
.

potrebbe funzionare, ancora nuovo per Android me stesso.

Possiamo provare un altro modo per convertire l'immagine in matrice di byte e quindi passare l'array di byte attraverso l'intento e nell'attività che viene chiamato possiamo convertire l'array di byte in bitmap

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top