diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogBase.java b/app/src/main/java/eu/faircode/email/FragmentDialogBase.java index b66fdcb297..19cf071f86 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogBase.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogBase.java @@ -42,6 +42,8 @@ public class FragmentDialogBase extends DialogFragment { private boolean once = false; private LifecycleOwner owner; private LifecycleRegistry registry; + private Fragment targetFragment; + private int targetRequestCode; @Override public void onCreate(@Nullable Bundle savedInstanceState) { @@ -131,14 +133,15 @@ public class FragmentDialogBase extends DialogFragment { @Override public void setTargetFragment(@Nullable Fragment fragment, int requestCode) { - super.setTargetFragment(fragment, requestCode); - Log.i("Set target " + this + " " + fragment); + targetFragment = fragment; + targetRequestCode = requestCode; + Log.i("Set target " + this + " " + fragment + " request=" + requestCode); fragment.getViewLifecycleOwner().getLifecycle().addObserver(new LifecycleObserver() { @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) public void onDestroy() { Log.i("Reset target " + FragmentDialogBase.this); - FragmentDialogBase.super.setTargetFragment(null, requestCode); + targetFragment = null; } }); } @@ -146,12 +149,11 @@ public class FragmentDialogBase extends DialogFragment { protected void sendResult(int result) { if (!once) { once = true; - Fragment target = getTargetFragment(); - Log.i("Dialog target=" + target + " result=" + result); - if (target != null) { + Log.i("Dialog target=" + targetFragment + " result=" + result); + if (targetFragment != null) { Intent data = new Intent(); data.putExtra("args", getArguments()); - target.onActivityResult(getTargetRequestCode(), result, data); + targetFragment.onActivityResult(targetRequestCode, result, data); } } }