2015-11-19 18 views
5

Sono nuovo ad Android. Voglio passare la bitmap in bundle. Ma non riesco a trovare alcuna soluzione per questo. In realtà, sono confuso. Voglio visualizzare un'immagine in un frammento della finestra di dialogo. Ma non so come mettere in bundle. Devo inviare come PutByteArray()? Ma se passo la bitmap come argomento, si afferma come argomento errato.Come inviare la bitmap nel pacchetto

Ecco il mio codice:

public class MyAlert extends DialogFragment { 
    Bitmap b; 
    public MyAlert newInstance(Bitmap b) { 
    this.b=b; 
    MyAlert frag=new MyAlert(); 
    Bundle args=new Bundle(); 
    args.put("bitByte",b); 
    frag.setArguments(args); 
    return frag; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
    Bitmap bitmap=getArguments().getByteArray("bitByte"); 
    return new AlertDialog().Builder(getActivity()); 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()).setView(R.id.fragid).create(); 
+8

'' Bitmap' è Parcelable', ** ** ma far passare l'intero 'Bitmap' non è una buona soluzione, meglio passare il percorso o qualche altro' Uri' che puntano al tuo 'Bitmap' – pskink

+2

http: //stackoverflow.com/questions/12908048/passing-bitmap-between-two-activities Utilizzare la logica per salvarlo nel pacchetto. – thepace

risposta

6

Prima di tutto convertirlo in un Byte array prima di aggiungerlo alla intenti, inviarlo, e decodificare.

// Conversione di array di byte

ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] byteArray = stream.toByteArray(); 

Bundle b = new Bundle(); 
b.putByteArray("image",byteArray); 


    // your fragment code 
fragment.setArguments(b); 

ottenere il valore tramite intento

byte[] byteArray = getArgument().getByteArrayExtra("image"); 
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
+0

Suppongo che Intent non sia possibile in Fragments, giusto? ecco perchè usiamo il bundle per questo? – Sayyaf

+0

controllare codice aggiornato – theLazyFinder

+7

perché, se è possibile chiamare semplicemente: 'b.putParcelable (" image ", bmp)'? – pskink

0

penso che sia più facile per inviare il percorso o indirizzo dell'immagine come una stringa e caricarlo sul l'altra parte.

Se l'immagine è un indirizzo Web, è possibile utilizzare le librerie Glide o Picasso e memorizzarle nella cache, quindi sulle altre attività o frammenti non verrà caricata due volte.

+0

Ma non mi è permesso usare librerie di terze parti. e pls inviano il codice di esempio dell'immagine come stringa. In realtà ho usato l'uri e ho mostrato l'immagine sull'attività. quando clicco su quell'immagine, quell'immagine dovrebbe apparire nel frammento della finestra di dialogo. – Sayyaf

+0

Non ho detto l'immagine come stringa, intendevo il percorso, e se hai mostrato l'immagine, penso che tu abbia finito, ma posso aggiornare la risposta se vuoi. –

+0

il problema ora im front è come utilizzare quella bitmap e inviare al frammento di dialogo e visualizzare su di esso. Non riesco a capire il codice sul sito di Andriod Developers. gentilmente se può aiutare, apprezzato. – Sayyaf

11

Non è necessario convertire bitmap in array di byte. È possibile inserire direttamente la bitmap in bundle. Fai riferimento al seguente codice per mettere la bitmap in bundle.

bundle.putParcelable("BitmapImage",bitmapname); 

Get bitmap da Bundle da seguente codice

Bitmap bitmapimage = getIntent().getExtras().getParcelable("BitmapImage"); 
1

ho trovato finalmente #pskink & ShashiRajan ha detto che possiamo passare direttamente bitmap. Ho implementato in questo modo. MyAlert myAlert = new MyAlert(); Bundle b=new Bundle(); b.putParcelable("BitImage",bit); myAlert.setArguments(b); spero che possa essere utile a un altro principiante come me, grazie per l'aiuto ragazzi.

1

Se si desidera passare l'immagine utilizzando il pacchetto, sono sicuro che sarà di aiuto.

Bundle bundle = new Bundle(); 
bundle.putParcelable("bitmap", bitmap); 
fragment.setArguments(bundle); 
Problemi correlati