web-dev-qa-db-fra.com

Comment envoyer le bitmap en paquet

Je suis nouveau sur Android. Je veux passer bitmap dans Bundle. Mais je ne trouve aucune solution pour cela. En fait, je suis confus. Je souhaite afficher une image dans un fragment de dialogue. Mais je ne sais pas comment mettre en Bundle. Devrais-je envoyer en tant que PutByteArray()? Mais si je passe bitmap en tant qu’argument, c’est un mauvais argument. 

Voici mon code:

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
Sayyaf

Tout d'abord, convertissez-le en Byte array avant de l'ajouter à l'intention, envoyez-le et décodez-le.

// Conversion en tableau d'octets

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

obtenir de la valeur via l'intention

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

Pas besoin de convertir bitmap en tableau d'octets. Vous pouvez directement mettre bitmap en paquet. Référez-vous au code suivant pour mettre bitmap en paquet.

bundle.putParcelable("BitmapImage",bitmapname);

Obtenir le bitmap de Bundle en suivant le code

Bitmap bitmapimage = getIntent().getExtras().getParcelable("BitmapImage");
26
Shashi Ranjan

Si vous souhaitez transmettre une image à l’aide d’un paquet, je suis sûr que cela vous aidera.

Bundle bundle = new Bundle();
bundle.putParcelable("bitmap", bitmap);
fragment.setArguments(bundle);
2
chitra Sathwara

Je pense qu'il est plus facile d'envoyer le chemin ou l'adresse de l'image sous forme de chaîne et de le charger de l'autre côté.

Si l'image est une adresse Web, vous pouvez utiliser les bibliothèques Glide ou Picasso et les mettre en cache, de sorte que les autres activités ou fragments ne seront pas chargés deux fois.

0
Ashkan Ghodrat