From b478bebf585c6b1028c689f528ff502e0b4e0501 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 29 Dec 2019 17:10:25 +0100 Subject: [PATCH] Prevent crash --- .../java/eu/faircode/email/FragmentCompose.java | 2 +- .../java/eu/faircode/email/FragmentMessages.java | 3 ++- app/src/main/java/eu/faircode/email/Helper.java | 16 ++++++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index ece25f697d..3bca5a77ba 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1288,7 +1288,7 @@ public class FragmentCompose extends FragmentBase { @Override protected void onExecuted(final Bundle args, EntityIdentity identity) { - Helper.selectKeyAlias(getActivity(), identity.sign_key_alias, new Helper.IKeyAlias() { + Helper.selectKeyAlias(getActivity(), getViewLifecycleOwner(), identity.sign_key_alias, new Helper.IKeyAlias() { @Override public void onSelected(String alias) { args.putString("alias", alias); diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index a8b531e92e..c71ac27e4b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -4062,7 +4062,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. if (auto && identity == null) return; - Helper.selectKeyAlias(getActivity(), identity == null ? null : identity.sign_key_alias, new Helper.IKeyAlias() { + String alias = (identity == null ? null : identity.sign_key_alias); + Helper.selectKeyAlias(getActivity(), getViewLifecycleOwner(), alias, new Helper.IKeyAlias() { @Override public void onSelected(String alias) { args.putString("alias", alias); diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 7aeb299723..25b2c7e064 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -80,6 +80,8 @@ import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.ContextCompat; import androidx.core.graphics.ColorUtils; import androidx.fragment.app.FragmentActivity; +import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.LifecycleOwner; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.RecyclerView; @@ -845,7 +847,7 @@ public class Helper { prefs.edit().remove("last_authentication").apply(); } - static void selectKeyAlias(final Activity activity, final String email, final IKeyAlias intf) { + static void selectKeyAlias(final Activity activity, final LifecycleOwner owner, final String email, final IKeyAlias intf) { final Context context = activity.getApplicationContext(); final Handler handler = new Handler(); @@ -859,7 +861,8 @@ public class Helper { handler.post(new Runnable() { @Override public void run() { - intf.onSelected(email); + if (owner.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + intf.onSelected(email); } }); return; @@ -880,10 +883,11 @@ public class Helper { handler.post(new Runnable() { @Override public void run() { - if (alias == null) - intf.onNothingSelected(); - else - intf.onSelected(alias); + if (owner.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + if (alias == null) + intf.onNothingSelected(); + else + intf.onSelected(alias); } }); }