diff --git a/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabsHost.kt b/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabsHost.kt index ca1dfe7a54..70fe9f2d48 100644 --- a/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabsHost.kt +++ b/android/src/main/java/com/swmansion/rnscreens/gamma/tabs/TabsHost.kt @@ -134,6 +134,10 @@ class TabsHost( private var interfaceInsetsChangeListener: SafeAreaView? = null + // We need to differentiate between user tapping the menu item + // and update requested from JS. + private var menuItemSelectedViaContainerUpdate = false + private val appearanceCoordinator = TabsHostAppearanceCoordinator(wrappedContext, bottomNavigationView, tabScreenFragments) @@ -221,7 +225,12 @@ class TabsHost( val fragment = getFragmentForMenuItemId(item.itemId) val tabKey = fragment?.tabScreen?.tabKey ?: "undefined" eventEmitter.emitOnNativeFocusChange(tabKey) - true + if (menuItemSelectedViaContainerUpdate) { + menuItemSelectedViaContainerUpdate = false + true + } else { + false + } } } @@ -317,6 +326,7 @@ class TabsHost( appearanceCoordinator.updateTabAppearance(this) + menuItemSelectedViaContainerUpdate = true bottomNavigationView.selectedItemId = checkNotNull(getSelectedTabScreenFragmentId()) { "[RNScreens] A single selected tab must be present" }