[英]onActivityResult on different fragment
我在1個活動中有2個片段,即片段A和片段B。
我從片段A移至帶有按鈕的片段B(添加片段),然后在片段BI中使用startActivityOnResult()
進行圖像捕獲/攝像頭操作。
我可以在片段A中調用onActivityOnresult
嗎?
我想完成片段B,所以我在片段A上獲得了imageUri
。
我已經在片段B中嘗試了以下操作,但是沒有用
getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();
你們能告訴我怎么做嗎?
這是我的代碼:
片段A:
btnSelfieUpload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sessionHelper.setForceDontShowPinLockOnNextResume(true);
if (shouldAskPermissions()) {
askPermissions();
}
((ApplicationActivity) mActivity).clearBackStack();
((ApplicationActivity) mActivity).clickTutorialSelfie();
bSelfieUpload = true;
}
});
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case TAKE_PICTURE_KTP:
if (resultCode == Activity.RESULT_OK) {
String path = data.getExtras().getString("uri");
try {
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(path, bmOptions);
fileKtp = PhotoUtils.convertToBase64(bitmap);
ivKtpDone.setVisibility(View.VISIBLE);
Glide.with(mActivity)
.load(path)
.asBitmap()
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.error(getResources().getDrawable(R.drawable.default_photo))
.centerCrop()
.into(ivKtpDone);
} catch (Exception e) {
Toast.makeText(mActivity, "Gagal memuat", Toast.LENGTH_SHORT).show();
}
}
break;
case TAKE_PICTURE_SELFIE:
if (resultCode == Activity.RESULT_OK) {
String path = data.getExtras().getString("uri");
try {
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeFile(path, bmOptions);
fileSelfie = PhotoUtils.convertToBase64(bitmap);
ivSelfieDone.setVisibility(View.VISIBLE);
Glide.with(mActivity)
.load(path)
.asBitmap()
.skipMemoryCache(true)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.error(getResources().getDrawable(R.drawable.default_photo))
.centerCrop()
.into(ivSelfieDone);
} catch (Exception e) {
Toast.makeText(mActivity, "Gagal memuat", Toast.LENGTH_SHORT).show();
}
}
break;
}
}
片段b:
public void takePhoto() {
sessionHelper.setForceDontShowPinLockOnNextResume(true);
HCIDAppController.getInstance().setEnablePinLock(false);
if ((Build.VERSION.SDK_INT > Build.VERSION_CODES.N)) {
Intent intent = new Intent(mActivity, HCIDCameraActivity.class);
intent.putExtra("cameraId", TAKE_PICTURE);
startActivityForResult(intent, 4);
} else {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
photo = new File(Environment.getExternalStorageDirectory(), "/" + Math.random() + ".jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
imageUri = Uri.fromFile(photo);
startActivityForResult(intent, 4);
}
getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();
}
您將在活動內部獲得onActivityResult()回調,因為兩個片段都是同一活動的一部分。
在onActivityResult()中被調用后,檢查請求代碼並彈出當前片段(片段B)。
因此,現在您的活動上只有片段A,因此在FragmentA內創建另一個onActivityResult()方法並執行操作。
請參考下面的鏈接彈出片段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.