Fix a crash when unpinning timelines

This commit is contained in:
Thomas 2025-03-27 12:08:54 +01:00
parent 7bdc67f922
commit cb947a7d3c

View file

@ -56,6 +56,7 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import app.fedilab.android.BaseMainActivity; import app.fedilab.android.BaseMainActivity;
@ -328,12 +329,18 @@ public class PinnedTimelineHelper {
} }
//Pinned tab position will start after BOTTOM_TIMELINE_COUNT (ie 5) //Pinned tab position will start after BOTTOM_TIMELINE_COUNT (ie 5)
activityMainBinding.tabLayout.removeAllTabs(); activityMainBinding.tabLayout.removeAllTabs();
if(activityMainBinding.viewPager.getAdapter() != null) {
activityMainBinding.viewPager.getAdapter().notifyDataSetChanged();
}
int toRemove = FedilabPageAdapter.BOTTOM_TIMELINE_COUNT; int toRemove = FedilabPageAdapter.BOTTOM_TIMELINE_COUNT;
if (!singleBar) { if (!singleBar) {
//Small hack to hide first tabs (they represent the item of the bottom menu) //Small hack to hide first tabs (they represent the item of the bottom menu)
toRemove = itemToRemoveInBottomMenu(activity); toRemove = itemToRemoveInBottomMenu(activity);
for (int i = 0; i < (FedilabPageAdapter.BOTTOM_TIMELINE_COUNT - toRemove); i++) { for (int i = 0; i < (FedilabPageAdapter.BOTTOM_TIMELINE_COUNT - toRemove); i++) {
activityMainBinding.tabLayout.addTab(activityMainBinding.tabLayout.newTab(), false); 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); ((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 : ""); String slug = pinnedTimeline.type.getValue() + (ident != null ? "|" + ident : "");
tab.setTag(slug); tab.setTag(slug);
activityMainBinding.tabLayout.addTab(tab, false); activityMainBinding.tabLayout.addTab(tab, false);
if(activityMainBinding.viewPager.getAdapter() != null){
activityMainBinding.viewPager.getAdapter().notifyDataSetChanged();
}
pinnedTimelineVisibleList.add(pinnedTimeline); pinnedTimelineVisibleList.add(pinnedTimeline);
} }
} }