如何将位图发送到bundle

Say*_*yaf 11 android bitmap

我是android的新手.我想将位图传递给Bundle.但我找不到任何解决方案.实际上,我很困惑.我想在Dialog片段中显示图像.但我不知道如何投入Bundle.我应该发送PutByteArray()吗?但是如果我将位图作为参数传递,那么它就是一个错误的参数.

这是我的代码:

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();
Run Code Online (Sandbox Code Playgroud)

Sha*_*jan 30

无需将位图转换为字节数组.您可以直接将位图放入bundle中.请参考以下代码将位图放入包中.

bundle.putParcelable("BitmapImage",bitmapname);
Run Code Online (Sandbox Code Playgroud)

通过以下代码从Bundle获取位图

Bitmap bitmapimage = getIntent().getExtras().getParcelable("BitmapImage");
Run Code Online (Sandbox Code Playgroud)


Emi*_*enT 11

首先将其转换为a,Byte array然后将其添加到intent,发送出去并解码.

//转换为字节数组

  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);
Run Code Online (Sandbox Code Playgroud)

通过意图获得价值

byte[] byteArray = getArgument().getByteArrayExtra("image");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
Run Code Online (Sandbox Code Playgroud)

  • 为什么,如果你可以简单地调用:`b.putParcelable("image",bmp)`? (12认同)
  • @Sayyaf你**不要**需要任何数组:`Bitmap`是'Parcelable`所以你可以直接传递它,看看我对原始问题的评论 (4认同)