diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index f97f8141e8..69c0ed6c36 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -76,7 +76,6 @@ import androidx.constraintlayout.widget.Group; import androidx.core.content.ContextCompat; import androidx.cursoradapter.widget.SimpleCursorAdapter; import androidx.fragment.app.FragmentTransaction; -import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Observer; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -804,8 +803,7 @@ public class FragmentCompose extends FragmentEx { public void onChanged(final EntityMessage draft) { // Draft was deleted if (draft == null || draft.ui_hide) { - if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) - getFragmentManager().popBackStack(); + finish(); return; } } diff --git a/app/src/main/java/eu/faircode/email/FragmentEx.java b/app/src/main/java/eu/faircode/email/FragmentEx.java index 0e42930726..8cfd581218 100644 --- a/app/src/main/java/eu/faircode/email/FragmentEx.java +++ b/app/src/main/java/eu/faircode/email/FragmentEx.java @@ -30,9 +30,11 @@ import android.view.inputmethod.InputMethodManager; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; +import androidx.lifecycle.Lifecycle; public class FragmentEx extends Fragment { private String subtitle = " "; + private boolean finish = false; protected void setSubtitle(int resid) { setSubtitle(getString(resid)); @@ -43,6 +45,13 @@ public class FragmentEx extends Fragment { updateSubtitle(); } + protected void finish() { + if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) + getFragmentManager().popBackStack(); + else + finish = true; + } + @Override public void onCreate(Bundle savedInstanceState) { Log.i(Helper.TAG, "Create " + this); @@ -66,6 +75,10 @@ public class FragmentEx extends Fragment { Log.i(Helper.TAG, "Resume " + this); super.onResume(); updateSubtitle(); + if (finish) { + getFragmentManager().popBackStack(); + finish = false; + } } @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentFolder.java b/app/src/main/java/eu/faircode/email/FragmentFolder.java index dc36210a14..1b88b29107 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolder.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolder.java @@ -33,7 +33,6 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Observer; public class FragmentFolder extends FragmentEx { @@ -149,8 +148,7 @@ public class FragmentFolder extends FragmentEx { @Override public void onChanged(@Nullable EntityFolder folder) { if (folder == null) { - if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) - getFragmentManager().popBackStack(); + finish(); return; } diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index 688b2aafb2..a1bf19d739 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -33,7 +33,6 @@ import java.util.List; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.Group; -import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Observer; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -109,8 +108,7 @@ public class FragmentFolders extends FragmentEx { @Override public void onChanged(@Nullable List folders) { if (folders == null) { - if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) - getFragmentManager().popBackStack(); + finish(); return; } diff --git a/app/src/main/java/eu/faircode/email/FragmentMessage.java b/app/src/main/java/eu/faircode/email/FragmentMessage.java index 6375101b3f..00a7b98839 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessage.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessage.java @@ -65,7 +65,6 @@ import androidx.browser.customtabs.CustomTabsIntent; import androidx.constraintlayout.widget.Group; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; -import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Observer; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -313,8 +312,7 @@ public class FragmentMessage extends FragmentEx { public void onChanged(@Nullable final TupleMessageEx message) { if (message == null || (!(debug && BuildConfig.DEBUG) && message.ui_hide)) { // Message gone (moved, deleted) - if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) - getFragmentManager().popBackStack(); + finish(); return; } diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index fa4cce9b42..25fe131ff2 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -40,7 +40,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.Group; import androidx.fragment.app.FragmentTransaction; -import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LiveData; import androidx.lifecycle.Observer; import androidx.paging.LivePagedListBuilder; @@ -155,8 +154,7 @@ public class FragmentMessages extends FragmentEx { @Override public void onChanged(@Nullable PagedList messages) { if (messages == null) { - if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) - getFragmentManager().popBackStack(); + finish(); return; }