From a1d45a26849a55096539fa2eacfdfce7fcf2ecf2 Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 5 Jul 2022 18:27:30 +0200 Subject: [PATCH] Prevent crash --- .../eu/faircode/email/FragmentDialogBase.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogBase.java b/app/src/main/java/eu/faircode/email/FragmentDialogBase.java index f8ffeb2e80..782bcf3f6c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogBase.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogBase.java @@ -183,7 +183,7 @@ public class FragmentDialogBase extends DialogFragment { targetRequestCode = requestCode; } - public void setTargetActivity(ActivityBase activity, int requestCode){ + public void setTargetActivity(ActivityBase activity, int requestCode) { targetRequestKey = activity.getRequestKey(); targetRequestCode = requestCode; } @@ -197,14 +197,22 @@ public class FragmentDialogBase extends DialogFragment { if (!hasResult || resultCode == RESULT_OK) { hasResult = true; - if (targetRequestKey != null) { - Bundle args = getArguments(); - if (args == null) // onDismiss - args = new Bundle(); - args.putInt("requestCode", targetRequestCode); - args.putInt("resultCode", resultCode); - getParentFragmentManager().setFragmentResult(targetRequestKey, args); - } + if (targetRequestKey != null) + try { + Bundle args = getArguments(); + if (args == null) // onDismiss + args = new Bundle(); + args.putInt("requestCode", targetRequestCode); + args.putInt("resultCode", resultCode); + getParentFragmentManager().setFragmentResult(targetRequestKey, args); + } catch (Throwable ex) { + Log.w(ex); + /* + java.lang.IllegalStateException: Fragment FragmentDialog... not associated with a fragment manager. + at androidx.fragment.app.Fragment.getParentFragmentManager(SourceFile:2) + at eu.faircode.email.FragmentDialogBase.sendResult(SourceFile:9) + */ + } } }