[ERLEDIGT] Bitmap von Activity an Activity übergben

C

coreytaylor211

Fortgeschrittenes Mitglied
5
Hallo zusammen,

Ich versuche per onclick auf ein ImageView eine neue Activity zu starten ( bitmap wird mit übergeben ) und diese soll dann das Bild in full size anzeigen, leider schließt die App sich sobald ich auf das Imageview klicke.

Es wird noch nicht mal ein Fehler im LogCat angezeigt.

Ich mal ein bisschen Code damit ihr seht was ich gemacht habe.

Code:
final int imageResource = getResources().getIdentifier(finalString,null,getPackageName());

                        imageView.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {

                                imageView.buildDrawingCache();
                                imageView.setDrawingCacheEnabled(true);



                                Bitmap image = BitmapFactory.decodeResource(getResources(),imageResource);
                                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                                image.compress(Bitmap.CompressFormat.JPEG, 100, stream);
                                byte[] byteArray = stream.toByteArray();
                                Intent intent = new Intent(FirstDetailFragment.this, FullSizeImage.class);

                                intent.putExtra("imagebitmap", byteArray);
                                startActivity(intent);
                            }
                        });


Und hier die andere Activity :
Code:
        Intent intent = new Intent();
        Bundle extras = getIntent().getExtras();
        byte[] byteArray = extras.getByteArray("imagebitmap");

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


         imgDisplay.setImageBitmap(bmp);

Ja wie schon gesagt finde ich den Fehler nicht. Ich habe das alles auch noch einmal anders gemacht hier mal die alte Version:


Code:
final int imageResource = getResources().getIdentifier(finalString,null,getPackageName());



                        imageView.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {

                                imageView.buildDrawingCache();
                               
                              imageView.setDrawingCacheEnabled(true);
                                Intent intent = new Intent(FirstDetailFragment.this, FullSizeImage.class);

                                Bitmap image= im.getDrawingCache();
                                Bundle extras = new Bundle();
                                extras.putParcelable("imagebitmap", image);
                               
                                intent.putExtras(extras);
                             
                                startActivity(intent);
                            }
                        });

Und hier wieder die andere Activity :
Code:
    Bundle extras = getIntent().getExtras();
    Bitmap bmp = (Bitmap) extras.getParcelable("imagebitmap");

imgDisplay.setImageBitmap(bmp );


PS : Mir ist gerade noch aufgefallen sobald ich das Intent nicht mehr übergebe startet er die neue Activity ohne Probleme, allerdings auch ohne Bild.
 
Zuletzt bearbeitet:
Hallo Corey,

BitmapObjekte in Intens mitzuliefern sollte man eigentlich nur bei kleineren Objekten im Notfall verwenden.
Ich würde empfehlen das Objekt zwischenzulagern, oder es in einem SingleTon zu verwalten
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: coreytaylor211
Ich würde nur den Pfad (Resource namen etc) übergeben und dann in der neuen Activity wieder auslesen und anzeigen.
 
  • Danke
Reaktionen: coreytaylor211 und swa00
Hey lieben Dank an euch beide, ich habe es jetzt über eine extra Klasse gemacht geht super. Hier mal der Code
Code:
public class SingletonBitmap {

    private Bitmap image = null;

    private static final SingletonBitmap instance = new SingletonBitmap();

    public static SingletonBitmap getInstance(){
        return instance;
    }

    private SingletonBitmap(){

    }

    public Bitmap getBitmap(){
        return image;
    }

    public void setBitmap(Bitmap image){
        this.image = image;
    }

}
 
Das scheint gut auszusehen :)
 
  • Danke
Reaktionen: coreytaylor211

Ähnliche Themen

M
Antworten
8
Aufrufe
961
deek
D
M
  • maksimilian
Antworten
15
Aufrufe
1.721
maksimilian
M
M
  • maksimilian
Antworten
5
Aufrufe
863
maksimilian
M
Zurück
Oben Unten