diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 4a8f6dcbfd6..a50effca6bf 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -2,11 +2,14 @@ package="com.reactnativenavigation"> - + + android:label="" + android:configChanges="keyboardHidden|orientation|screenSize"/> + android:label="" + android:configChanges="keyboardHidden|orientation|screenSize"/> diff --git a/android/app/src/main/java/com/reactnativenavigation/activities/BaseReactActivity.java b/android/app/src/main/java/com/reactnativenavigation/activities/BaseReactActivity.java index 95d73ebbd49..21ea55875df 100644 --- a/android/app/src/main/java/com/reactnativenavigation/activities/BaseReactActivity.java +++ b/android/app/src/main/java/com/reactnativenavigation/activities/BaseReactActivity.java @@ -222,7 +222,6 @@ protected void onDestroy() { } } - @CallSuper public void push(Screen screen) { StyleHelper.updateStyles(mToolbar, screen); if (mToolbar != null) { @@ -235,7 +234,6 @@ public void push(Screen screen) { } } - @CallSuper public Screen pop(String navigatorId) { if (mToolbar != null && getCurrentNavigatorId().equals(navigatorId) && @@ -246,7 +244,6 @@ public Screen pop(String navigatorId) { return null; } - @CallSuper public Screen popToRoot(String navigatorId) { if (mToolbar != null) { mToolbar.setNavUpButton(); @@ -255,7 +252,6 @@ public Screen popToRoot(String navigatorId) { return null; } - @CallSuper public Screen resetTo(Screen screen) { StyleHelper.updateStyles(mToolbar, screen); if (mToolbar != null) { @@ -287,6 +283,11 @@ public void onConfigurationChanged(Configuration newConfig) { if (mDrawerToggle != null) { mDrawerToggle.onConfigurationChanged(newConfig); } + + Screen currentScreen = getCurrentScreen(); + if (mToolbar != null && currentScreen != null) { + mToolbar.setNavUpButton(currentScreen); + } } @Override diff --git a/android/app/src/main/java/com/reactnativenavigation/activities/BottomTabActivity.java b/android/app/src/main/java/com/reactnativenavigation/activities/BottomTabActivity.java index b2cf93ce778..b0a0b2a9fac 100644 --- a/android/app/src/main/java/com/reactnativenavigation/activities/BottomTabActivity.java +++ b/android/app/src/main/java/com/reactnativenavigation/activities/BottomTabActivity.java @@ -111,7 +111,6 @@ public boolean onCreateOptionsMenu(Menu menu) { @Override public void push(Screen screen) { - super.push(screen); for (ScreenStack stack : mScreenStacks) { if (stack.peek().navigatorId.equals(screen.navigatorId)) { stack.push(screen); @@ -122,7 +121,6 @@ public void push(Screen screen) { @Override public Screen pop(String navigatorId) { - super.pop(navigatorId); for (ScreenStack stack : mScreenStacks) { if (stack.peek().navigatorId.equals(navigatorId)) { Screen popped = stack.pop(); @@ -135,7 +133,6 @@ public Screen pop(String navigatorId) { @Override public Screen popToRoot(String navigatorId) { - super.popToRoot(navigatorId); for (ScreenStack stack : mScreenStacks) { if (stack.peek().navigatorId.equals(navigatorId)) { Screen popped = stack.popToRoot(); @@ -156,8 +153,8 @@ public Screen getCurrentScreen() { return mScreenStacks != null ? mScreenStacks.get(mCurrentStackPosition).peek() : null; } + @Override public Screen resetTo(Screen screen) { - super.resetTo(screen); StyleHelper.updateStyles(mToolbar, screen); return mScreenStacks.get(mCurrentStackPosition).resetTo(screen); } @@ -188,13 +185,6 @@ public void onTabSelected(int position, boolean wasSelected) { mCurrentStackPosition = position; StyleHelper.updateStyles(mToolbar, getCurrentScreen()); - - // Hide or show back button if needed - if (getScreenStackSize() > 1) { - mToolbar.setNavUpButton(getCurrentScreen()); - } else { - mToolbar.setNavUpButton(); - } } public void setTabBadge(ReadableMap params) { diff --git a/android/app/src/main/java/com/reactnativenavigation/activities/SingleScreenActivity.java b/android/app/src/main/java/com/reactnativenavigation/activities/SingleScreenActivity.java index 7c01f024cb2..32b35a74bed 100644 --- a/android/app/src/main/java/com/reactnativenavigation/activities/SingleScreenActivity.java +++ b/android/app/src/main/java/com/reactnativenavigation/activities/SingleScreenActivity.java @@ -55,14 +55,12 @@ protected void setupToolbar(Screen screen) { @Override public void push(Screen screen) { - super.push(screen); mScreenStack.push(screen); StyleHelper.updateStyles(mToolbar, screen); } @Override public Screen pop(String navigatorId) { - super.pop(navigatorId); Screen popped = mScreenStack.pop(); StyleHelper.updateStyles(mToolbar, getCurrentScreen()); return popped; @@ -70,15 +68,13 @@ public Screen pop(String navigatorId) { @Override public Screen popToRoot(String navigatorId) { - super.popToRoot(navigatorId); - Screen screen = mScreenStack.popToRoot(); + Screen popped = mScreenStack.popToRoot(); StyleHelper.updateStyles(mToolbar, getCurrentScreen()); - return screen; + return popped; } @Override public Screen resetTo(Screen screen) { - super.resetTo(screen); Screen popped = mScreenStack.resetTo(screen); StyleHelper.updateStyles(mToolbar, screen); return popped; diff --git a/android/app/src/main/java/com/reactnativenavigation/activities/TabActivity.java b/android/app/src/main/java/com/reactnativenavigation/activities/TabActivity.java index 91da3549ab1..ff01140d42a 100644 --- a/android/app/src/main/java/com/reactnativenavigation/activities/TabActivity.java +++ b/android/app/src/main/java/com/reactnativenavigation/activities/TabActivity.java @@ -71,14 +71,12 @@ public boolean onCreateOptionsMenu(Menu menu) { @Override public void push(Screen screen) { - super.push(screen); StyleHelper.updateStyles(mToolbar, screen); mAdapter.push(screen); } @Override public Screen pop(String navigatorId) { - super.pop(navigatorId); Screen popped = mAdapter.pop(navigatorId); setNavigationStyle(getCurrentScreen()); return popped; diff --git a/android/app/src/main/java/com/reactnativenavigation/utils/StyleHelper.java b/android/app/src/main/java/com/reactnativenavigation/utils/StyleHelper.java index 8c3f398b0ac..62e301fe671 100644 --- a/android/app/src/main/java/com/reactnativenavigation/utils/StyleHelper.java +++ b/android/app/src/main/java/com/reactnativenavigation/utils/StyleHelper.java @@ -16,6 +16,7 @@ public class StyleHelper { public static void updateStyles(RnnToolBar toolBar, Screen screen) { try { + toolBar.setNavUpButton(screen); toolBar.updateAndSetButtons(screen); setWindowStyle(screen); toolBar.setupToolbarButtonsAsync(screen); diff --git a/android/app/src/main/java/com/reactnativenavigation/views/RnnToolBar.java b/android/app/src/main/java/com/reactnativenavigation/views/RnnToolBar.java index f6df7a55fbb..899c316d649 100644 --- a/android/app/src/main/java/com/reactnativenavigation/views/RnnToolBar.java +++ b/android/app/src/main/java/com/reactnativenavigation/views/RnnToolBar.java @@ -224,7 +224,8 @@ public void setNavUpButton(Screen screen) { return; } - boolean isBack = screen != null; + BaseReactActivity activity = (BaseReactActivity) getContext(); + boolean isBack = activity.getScreenStackSize() > 1; boolean hasDrawer = mDrawerToggle != null; Drawable navIcon = null;