Fix onPrepareOptionsMenu not being called on the first tab switch (#7870)

Defer findFragmentByTag until onPageScrollStateChange (SCROLL_STATE_IDLE), as the FragmentManager isn’t ready on the first call to onPageSelected (when first switching tabs).
This commit is contained in:
schasi 2025-07-17 16:03:37 +02:00 committed by GitHub
parent 611bd75caa
commit f99e097e3e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -23,11 +23,21 @@ public abstract class PagedToolbarFragment extends Fragment {
return false;
});
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
private int selectedPosition = 0;
@Override
public void onPageSelected(int position) {
Fragment child = getChildFragmentManager().findFragmentByTag("f" + position);
if (child != null) {
child.onPrepareOptionsMenu(toolbar.getMenu());
selectedPosition = position;
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
if (state == ViewPager2.SCROLL_STATE_IDLE) {
Fragment child = getChildFragmentManager().findFragmentByTag("f" + selectedPosition);
if (child != null) {
child.onPrepareOptionsMenu(toolbar.getMenu());
}
}
}
});