我想将字节数组数据从活动发送到片段, 这是我的代码 从活动发送数据
Bundle bundle = new Bundle();
bundle.putByteArray("bytearray",byteArray);
CustImageSignatureUploadFragment fragobj = new
CustImageSignatureUploadFragment();
fragobj.setArguments(bundle);
通过onCreateView()方法在Fragment中获取数据
if (getArguments() != null) {
byteArray = getArguments().getByteArray("bytearray");
if (byteArray != null) {
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0,
byteArray.length);
binding.custImage.setImageBitmap(bmp);
}
}
但是我遇到错误
java.lang.RuntimeException: Can't create handler inside thread Thread[Thread-8,5,main] that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:205)
at android.os.Handler.<init>(Handler.java:118)
at com.jmr.agency.banking.ui.base.BaseFragment$3.<init>(BaseFragment.java:816)
at com.jmr.agency.banking.ui.base.BaseFragment.<init>(BaseFragment.java:815)
at com.jmr.agency.banking.ui_fragment.cust_img_signature_upload.CustImageSignatureUploadFragment.<init>(CustImageSignatureUploadFragment.java:62)
at com.jmr.agency.banking.ui.facerecognition.FRAddPersonPreviewActivity.onCameraFrame(FRAddPersonPreviewActivity.java:200)
我已经尝试过
this.runOnUiThread(new Runnable() {
public void run() {
Bundle bundle = new Bundle();
bundle.putByteArray("bytearray",byteArray);
CustImageSignatureUploadFragment
fragobj = new CustImageSignatureUploadFragment();
fragobj.setArguments(bundle);
}
});
答案 0 :(得分:0)
要获取byteArray,请执行以下操作
Bundle b = new Bundle();
b.putByteArray("image",byteArray);
// your fragment code
CustImageSignatureUploadFragment
fragobj = new CustImageSignatureUploadFragment();
fragobj.setArguments(b);
byte[] array = getArgument().getByteArrayExtra("bytearray");
第二个选项
如果您尝试传递位图。 要将参数设置为Bungle。
bundle.putParcelable("bytearray", bytearray);
通过以下代码从Bundle中获取位图
Bitmap bitmap = getIntent().getExtras().getParcelable("bytearray");
答案 1 :(得分:0)
如果您创建片段的newInstance并传递数组,则在片段内部传递数据太容易了。
private byte[] bytes;
public static CustImageSignatureUploadFragment newInstance(byte[] bytes) {
Bundle args = new Bundle();
CustImageSignatureUploadFragment fragment = new CustImageSignatureUploadFragment();
fragment.bytes = bytes;
fragment.setArguments(args);
return fragment;
}
然后在您的活动中使用:
CustImageSignatureUploadFragment fragobj =
CustImageSignatureUploadFragment.newInstance(byteArray);