From cb947a7d3c19728b6c98c70246280239c75d8e7c Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 27 Mar 2025 12:08:54 +0100 Subject: [PATCH] Fix a crash when unpinning timelines --- .../android/mastodon/helper/PinnedTimelineHelper.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/java/app/fedilab/android/mastodon/helper/PinnedTimelineHelper.java b/app/src/main/java/app/fedilab/android/mastodon/helper/PinnedTimelineHelper.java index 8551f48f..6ae23512 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/helper/PinnedTimelineHelper.java +++ b/app/src/main/java/app/fedilab/android/mastodon/helper/PinnedTimelineHelper.java @@ -56,6 +56,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Objects; import java.util.regex.Pattern; import app.fedilab.android.BaseMainActivity; @@ -328,12 +329,18 @@ public class PinnedTimelineHelper { } //Pinned tab position will start after BOTTOM_TIMELINE_COUNT (ie 5) activityMainBinding.tabLayout.removeAllTabs(); + if(activityMainBinding.viewPager.getAdapter() != null) { + activityMainBinding.viewPager.getAdapter().notifyDataSetChanged(); + } int toRemove = FedilabPageAdapter.BOTTOM_TIMELINE_COUNT; if (!singleBar) { //Small hack to hide first tabs (they represent the item of the bottom menu) toRemove = itemToRemoveInBottomMenu(activity); for (int i = 0; i < (FedilabPageAdapter.BOTTOM_TIMELINE_COUNT - toRemove); i++) { activityMainBinding.tabLayout.addTab(activityMainBinding.tabLayout.newTab(), false); + if(activityMainBinding.viewPager.getAdapter() != null) { + activityMainBinding.viewPager.getAdapter().notifyDataSetChanged(); + } ((ViewGroup) activityMainBinding.tabLayout.getChildAt(0)).getChildAt(i).setVisibility(View.GONE); } } @@ -449,6 +456,9 @@ public class PinnedTimelineHelper { String slug = pinnedTimeline.type.getValue() + (ident != null ? "|" + ident : ""); tab.setTag(slug); activityMainBinding.tabLayout.addTab(tab, false); + if(activityMainBinding.viewPager.getAdapter() != null){ + activityMainBinding.viewPager.getAdapter().notifyDataSetChanged(); + } pinnedTimelineVisibleList.add(pinnedTimeline); } }