Skip to content

Commit 441e1d8

Browse files
authored
fix: updateSelectedTab removing unowned fragments (#3608)
## Description Fixes `updateSelectedTab` removing unowned fragments (fragments that were created by other libraries) ## Changes - Made sure that the code will only remove `TabScreenFragment` ## Test plan This change was tested using the new Expo template in the preview version of Expo Go. Before, the `react-native-screens` removed the fragment created by `expo-dev-menu`. With this fix, everything seems to work.
1 parent ac6d8e3 commit 441e1d8

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

  • android/src/main/java/com/swmansion/rnscreens/gamma/tabs

android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabsHost.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,8 +382,9 @@ class TabsHost(
382382
private fun updateSelectedTab() {
383383
val newFocusedTab = currentFocusedTab
384384

385-
check(requireFragmentManager.fragments.size <= 1) { "[RNScreens] There can be only a single focused tab" }
386-
val oldFocusedTab = requireFragmentManager.fragments.firstOrNull()
385+
val tabFragments = requireFragmentManager.fragments.filterIsInstance<TabScreenFragment>()
386+
check(tabFragments.size <= 1) { "[RNScreens] There can be only a single focused tab" }
387+
val oldFocusedTab = tabFragments.firstOrNull()
387388

388389
if (newFocusedTab === oldFocusedTab) {
389390
return

0 commit comments

Comments
 (0)