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