gpt4 book ai didi

java - 不同 fragment 上的 onActivityResult

转载 作者:行者123 更新时间:2023-11-29 18:42:42 25 4
gpt4 key购买 nike

我在 1 个 Activity 中有 2 个 fragment ,即 fragment A 和 fragment B。

从 fragment A,我使用按钮(添加 fragment )移动到 fragment B,在 fragment B 中,我使用 startActivityOnResult() 来捕捉图像/相机。

我可以在 fragment A 中调用 onActivityOnresult 吗?

我想完成 fragment B,所以我得到 fragment A 上的 imageUri

我在 fragment B 中尝试了以下内容,但没有用

getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();

你们能告诉我如何正确地做到这一点吗?

这是我的代码:

fragment 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;
}
}

fragment 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();
}

最佳答案

您将在 Activity 中获得 onActivityResult() 回调,因为这两个 fragment 是同一 Activity 的一部分。

onActivityResult() 中调用后,检查请求代码并弹出当前 fragment ( fragment B)。

现在您的 Activity 上只有 fragment A,因此请在 FragmentA 中创建另一个 onActivityResult() 方法并执行您的操作。

请参阅以下链接以弹出 fragment 。

How to close the current fragment by using Button like the back button?

关于java - 不同 fragment 上的 onActivityResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52732450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com