diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java b/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java index 3683e51077c..e61df575d94 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsController.java @@ -274,6 +274,7 @@ private void selectTab(int newIndex, boolean enableSelectionHistory) { getCurrentView().setVisibility(View.INVISIBLE); bottomTabs.setCurrentItem(newIndex, false); getCurrentView().setVisibility(View.VISIBLE); + getCurrentChild().onViewWillAppear(); getCurrentChild().onViewDidAppear(); } diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabs.java b/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabs.java index 569ebf4d1c1..8ce24b63bc6 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabs.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/views/bottomtabs/BottomTabs.java @@ -88,6 +88,12 @@ public void setBackgroundColor(int color) { if (getDefaultBackgroundColor() != color) setDefaultBackgroundColor(color); } + @Override + public void restoreBottomNavigation(boolean withAnimation) { + super.restoreBottomNavigation(withAnimation); + if (!withAnimation) setVisibility(View.VISIBLE); + } + @Override public void hideBottomNavigation(boolean withAnimation) { super.hideBottomNavigation(withAnimation); diff --git a/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt b/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt index 2d14b4ccde9..1c137e6965c 100644 --- a/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt +++ b/lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/bottomtabs/BottomTabsControllerTest.kt @@ -316,7 +316,24 @@ class BottomTabsControllerTest : BaseTest() { ), ArgumentMatchers.any(Int::class.java) ) } + @Test + fun `mergeOptions - select tab calls onViewWillAppear to apply options on the selected child`(){ + uut.ensureViewIsCreated() + Java6Assertions.assertThat(uut.selectedIndex).isZero + + val options = Options() + options.bottomTabsOptions.currentTabIndex = Number(1) + uut.mergeOptions(options) + Java6Assertions.assertThat(uut.selectedIndex).isOne + Mockito.verify(child2).onViewWillAppear() + Mockito.verify(child2).onViewDidAppear() + options.bottomTabsOptions.currentTabIndex = Number(0) + uut.mergeOptions(options) + Java6Assertions.assertThat(uut.selectedIndex).isZero + Mockito.verify(child1).onViewWillAppear() + Mockito.verify(child1).onViewDidAppear() + } @Test fun mergeOptions_drawBehind() { Java6Assertions.assertThat(uut.getBottomInset(child1)).isEqualTo(uut.bottomTabs.height) diff --git a/package.json b/package.json index 7bfe279a756..2a479d6da25 100644 --- a/package.json +++ b/package.json @@ -216,4 +216,4 @@ } } } -} \ No newline at end of file +} diff --git a/playground/src/screens/LayoutsScreen.tsx b/playground/src/screens/LayoutsScreen.tsx index a8dd57b14c8..1f1a15de69f 100644 --- a/playground/src/screens/LayoutsScreen.tsx +++ b/playground/src/screens/LayoutsScreen.tsx @@ -43,6 +43,9 @@ export default class LayoutsScreen extends NavigationComponent