diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 9d36d9397e..848097934b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -1885,7 +1885,7 @@ public class FragmentMessages extends FragmentBase { builder.setFetchExecutor(executor); - modelMessages.setMessages(viewType, getActivity(), builder.build()); + modelMessages.setMessages(viewType, getViewLifecycleOwner(), builder.build()); modelMessages.observe(viewType, getViewLifecycleOwner(), observer); } diff --git a/app/src/main/java/eu/faircode/email/ViewModelMessages.java b/app/src/main/java/eu/faircode/email/ViewModelMessages.java index 0ac0a5e352..4e2be9d925 100644 --- a/app/src/main/java/eu/faircode/email/ViewModelMessages.java +++ b/app/src/main/java/eu/faircode/email/ViewModelMessages.java @@ -38,20 +38,22 @@ public class ViewModelMessages extends ViewModel { final boolean thread = (viewType == AdapterMessage.ViewType.THREAD); this.messages.put(thread, messages); - // Keep list up-to-date for previous/next navigation - messages.observe(owner, new Observer>() { - @Override - public void onChanged(PagedList messages) { - } - }); - - owner.getLifecycle().addObserver(new LifecycleObserver() { - @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) - public void onDestroyed() { - Log.i("Removed model thread=" + thread); - ViewModelMessages.this.messages.remove(thread); - } - }); + if (thread) + owner.getLifecycle().addObserver(new LifecycleObserver() { + @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) + public void onDestroyed() { + Log.i("Removed model thread"); + ViewModelMessages.this.messages.remove(thread); + } + }); + else { + // Keep list up-to-date for previous/next navigation + messages.observeForever(new Observer>() { + @Override + public void onChanged(PagedList messages) { + } + }); + } } void observe(AdapterMessage.ViewType viewType, LifecycleOwner owner, Observer> observer) {