diff --git a/app/src/main/java/eu/faircode/email/ActivitySetup.java b/app/src/main/java/eu/faircode/email/ActivitySetup.java index 3af206cc18..0ad0a3a5fd 100644 --- a/app/src/main/java/eu/faircode/email/ActivitySetup.java +++ b/app/src/main/java/eu/faircode/email/ActivitySetup.java @@ -195,7 +195,7 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int pos = parent.getChildAdapterPosition(view); - NavMenuItem menu = adapter.get(pos); + NavMenuItem menu = (adapter == null ? null : adapter.get(pos)); outRect.set(0, 0, 0, menu != null && menu.isSeparated() ? d.getIntrinsicHeight() : 0); } }; diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 8221088c4e..fdd3db16ca 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -553,7 +553,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int pos = parent.getChildAdapterPosition(view); - NavMenuItem menu = adapterNavMenuExtra.get(pos); + NavMenuItem menu = (adapterNavMenuExtra == null ? null : adapterNavMenuExtra.get(pos)); outRect.set(0, 0, 0, menu != null && menu.isSeparated() ? d.getIntrinsicHeight() : 0); } }; diff --git a/app/src/main/java/eu/faircode/email/FragmentAccounts.java b/app/src/main/java/eu/faircode/email/FragmentAccounts.java index d6624a55dd..62bc969310 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAccounts.java +++ b/app/src/main/java/eu/faircode/email/FragmentAccounts.java @@ -45,6 +45,7 @@ import androidx.appcompat.widget.PopupMenu; import androidx.constraintlayout.widget.Group; import androidx.core.view.MenuCompat; import androidx.fragment.app.FragmentTransaction; +import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Observer; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.DividerItemDecoration; @@ -177,6 +178,9 @@ public class FragmentAccounts extends FragmentBase { if (pos == NO_POSITION) return null; + if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + return null; + TupleAccountEx prev = adapter.getItemAtPosition(pos - 1); TupleAccountEx account = adapter.getItemAtPosition(pos); if (pos > 0 && prev == null) diff --git a/app/src/main/java/eu/faircode/email/FragmentFolders.java b/app/src/main/java/eu/faircode/email/FragmentFolders.java index 5b6af33522..42a4ad2aca 100644 --- a/app/src/main/java/eu/faircode/email/FragmentFolders.java +++ b/app/src/main/java/eu/faircode/email/FragmentFolders.java @@ -58,6 +58,7 @@ import androidx.constraintlayout.widget.Group; import androidx.core.app.NotificationCompat; import androidx.core.view.MenuCompat; import androidx.fragment.app.FragmentTransaction; +import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Observer; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.DividerItemDecoration; @@ -249,6 +250,9 @@ public class FragmentFolders extends FragmentBase { if (pos == NO_POSITION) return null; + if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + return null; + TupleFolderEx prev = adapter.getItemAtPosition(pos - 1); TupleFolderEx account = adapter.getItemAtPosition(pos); if (pos > 0 && prev == null) diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentities.java b/app/src/main/java/eu/faircode/email/FragmentIdentities.java index 045e6f6141..f0ada0b2af 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentities.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentities.java @@ -36,6 +36,7 @@ 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.Observer; import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.DividerItemDecoration; @@ -124,6 +125,9 @@ public class FragmentIdentities extends FragmentBase { if (pos == NO_POSITION) return null; + if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED)) + return null; + TupleIdentityEx prev = adapter.getItemAtPosition(pos - 1); TupleIdentityEx identity = adapter.getItemAtPosition(pos); if (pos > 0 && prev == null) diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 00f043affb..6dd12e0795 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -697,8 +697,10 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. @Override public void onDraw(@NonNull Canvas canvas, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { int count = parent.getChildCount(); + String sort = (adapter == null ? null : adapter.getSort()); + if (date_fixed) - if ("time".equals(adapter.getSort())) + if ("time".equals(sort)) inGroup.setVisibility(count > 0 ? View.VISIBLE : View.INVISIBLE); else inGroup.setVisibility(View.GONE); @@ -707,7 +709,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. View view = parent.getChildAt(i); int pos = parent.getChildAdapterPosition(view); - if (i == 0 && date_fixed && "time".equals(adapter.getSort())) { + if (i == 0 && date_fixed && "time".equals(sort)) { TupleMessageEx top = adapter.getItemAtPosition(pos); tvFixedDate.setVisibility(top == null ? View.INVISIBLE : View.VISIBLE); if (!cards)