diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index e4643a5f14e67928f60d02de4a2fa66984276794..ecb2e5de460f2bd116e83bfaf5c53b2c8dda0ac2 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -1321,8 +1321,8 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl return pagerAdapter.switchToSession(node); } - public void setupViewPager(ViewPager pager, TabLayout tabs, boolean onboarding) { - pagerAdapter.setupViewPager(pager, tabs, onboarding); + public void setupViewPager(ViewPager pager, TabLayout tabs, boolean onboarding, Conversation oldConversation) { + pagerAdapter.setupViewPager(pager, tabs, onboarding, oldConversation); } public void showViewPager() { @@ -1363,16 +1363,23 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl protected View page2 = null; protected boolean mOnboarding = false; - public void setupViewPager(ViewPager pager, TabLayout tabs, boolean onboarding) { + public void setupViewPager(ViewPager pager, TabLayout tabs, boolean onboarding, Conversation oldConversation) { mPager = pager; mTabs = tabs; mOnboarding = onboarding; + if (oldConversation != null) { + oldConversation.pagerAdapter.mPager = null; + oldConversation.pagerAdapter.mTabs = null; + } + if (mPager == null) return; if (sessions != null) show(); if (pager.getChildAt(0) != null) page1 = pager.getChildAt(0); if (pager.getChildAt(1) != null) page2 = pager.getChildAt(1); + if (page1 == null) page1 = oldConversation.pagerAdapter.page1; + if (page2 == null) page2 = oldConversation.pagerAdapter.page2; if (page1 == null || page2 == null) { throw new IllegalStateException("page1 or page2 were not present as child or in model?"); } diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 54b67886be823d9f0f61d40338c927458c3a63ea..10c674713152ada1db33edb8b19b59f727570efa 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -1368,7 +1368,7 @@ public class ConversationFragment extends XmppFragment messageListAdapter.setOnContactPictureClicked(null); messageListAdapter.setOnContactPictureLongClicked(null); messageListAdapter.setOnInlineImageLongClicked(null); - if (conversation != null) conversation.setupViewPager(null, null, false); + if (conversation != null) conversation.setupViewPager(null, null, false, null); } private void quoteText(String text) { @@ -2855,12 +2855,11 @@ public class ConversationFragment extends XmppFragment .setOpenConversation(this.conversation); if (commandAdapter != null && conversation != originalConversation) { - originalConversation.setupViewPager(null, null, false); - conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout, activity.xmppConnectionService.isOnboarding()); + conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout, activity.xmppConnectionService.isOnboarding(), originalConversation); refreshCommands(false); } if (commandAdapter == null && conversation != null) { - conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout, activity.xmppConnectionService.isOnboarding()); + conversation.setupViewPager(binding.conversationViewPager, binding.tabLayout, activity.xmppConnectionService.isOnboarding(), null); commandAdapter = new CommandAdapter((XmppActivity) getActivity()); binding.commandsView.setAdapter(commandAdapter); binding.commandsView.setOnItemClickListener((parent, view, position, id) -> {