How To Send The Bitmap Into Bundle
Solution 1:
No need to convert bitmap to byte array. You can directly put bitmap into bundle. Refer following code to put bitmap into bundle.
bundle.putParcelable("BitmapImage",bitmapname);
Get bitmap from Bundle by following code
Bitmapbitmapimage= getIntent().getExtras().getParcelable("BitmapImage");
Solution 2:
First of all convert it to a Byte array
before adding it to intent, send it out, and decode.
//Convertion to byte array
ByteArrayOutputStreamstream=newByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Bundleb=newBundle();
b.putByteArray("image",byteArray);
// your fragment code
fragment.setArguments(b);
get Value via intent
byte[] byteArray = getArgument().getByteArrayExtra("image");
Bitmapbmp= BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
Solution 3:
If you want to pass image using bundle then i am sure it will help you.
Bundlebundle=newBundle();
bundle.putParcelable("bitmap", bitmap);
fragment.setArguments(bundle);
Solution 4:
if you are using NavigationComponent
, you should use safeArgs
!
you can put arguments in nav_graph
like this :
<argumentandroid:name="profileImage"app:nullable="true"app:argType="android.graphics.Bitmap" />
and send it like it : (First Fragment)
findNavController().navigate(SettingFragmentDirections.actionSettingFragmentToHomeFragment(bitmap))
and give it like this : (Second Fragment)
valbitmapimage=
arguments?.getParcelable<Bitmap>("profileImage")
user_profile_img.setImageBitmap(bitmapimage)
read more : https://developer.android.com/guide/navigation/navigation-pass-data
Solution 5:
I think it is easier to send the path or address of the image as a string and load it on the other side.
If the image is a web address, you can use Glide or Picasso libraries and cache them, so on the other activities or fragments it will not load twice.
Post a Comment for "How To Send The Bitmap Into Bundle"