|  | @@ -52,7 +52,6 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
 | 
	
		
			
			| 52 | 52 |          if (sideMenuParams == null) {
 | 
	
		
			
			| 53 | 53 |              return;
 | 
	
		
			
			| 54 | 54 |          }
 | 
	
		
			
			| 55 |  | -
 | 
	
		
			
			| 56 | 55 |          sideMenu = new SideMenu(getContext(), sideMenuParams);
 | 
	
		
			
			| 57 | 56 |          RelativeLayout.LayoutParams lp = new LayoutParams(MATCH_PARENT, MATCH_PARENT);
 | 
	
		
			
			| 58 | 57 |          addView(sideMenu, lp);
 | 
	
	
		
			
			|  | @@ -65,8 +64,8 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
 | 
	
		
			
			| 65 | 64 |      }
 | 
	
		
			
			| 66 | 65 |  
 | 
	
		
			
			| 67 | 66 |      private void createAndAddScreens(int position) {
 | 
	
		
			
			| 68 |  | -        ScreenStack newStack = new ScreenStack(activity, getContentContainer(), this);
 | 
	
		
			
			| 69 | 67 |          ScreenParams screenParams = params.tabParams.get(position);
 | 
	
		
			
			|  | 68 | +        ScreenStack newStack = new ScreenStack(activity, getContentContainer(), screenParams.navigatorId, this);
 | 
	
		
			
			| 70 | 69 |          newStack.pushInitialScreen(screenParams, createScreenLayoutParams(screenParams));
 | 
	
		
			
			| 71 | 70 |          screenStacks[position] = newStack;
 | 
	
		
			
			| 72 | 71 |      }
 | 
	
	
		
			
			|  | @@ -163,8 +162,17 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
 | 
	
		
			
			| 163 | 162 |  
 | 
	
		
			
			| 164 | 163 |      @Override
 | 
	
		
			
			| 165 | 164 |      public void push(ScreenParams screenParams) {
 | 
	
		
			
			| 166 |  | -        getCurrentScreenStack().push(screenParams, createScreenLayoutParams(screenParams));
 | 
	
		
			
			| 167 |  | -        bottomTabs.setStyleFromScreen(screenParams.styleParams);
 | 
	
		
			
			|  | 165 | +        ScreenStack screenStack = getScreenStack(screenParams.navigatorId);
 | 
	
		
			
			|  | 166 | +        if (screenStack == null) {
 | 
	
		
			
			|  | 167 | +            return;
 | 
	
		
			
			|  | 168 | +        }
 | 
	
		
			
			|  | 169 | +
 | 
	
		
			
			|  | 170 | +        if (isCurrentStack(screenStack)) {
 | 
	
		
			
			|  | 171 | +            screenStack.push(screenParams, createScreenLayoutParams(screenParams));
 | 
	
		
			
			|  | 172 | +            bottomTabs.setStyleFromScreen(screenParams.styleParams);
 | 
	
		
			
			|  | 173 | +        } else {
 | 
	
		
			
			|  | 174 | +            screenStack.push(screenParams, createScreenLayoutParams(screenParams));
 | 
	
		
			
			|  | 175 | +        }
 | 
	
		
			
			| 168 | 176 |      }
 | 
	
		
			
			| 169 | 177 |  
 | 
	
		
			
			| 170 | 178 |      @Override
 | 
	
	
		
			
			|  | @@ -189,7 +197,7 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
 | 
	
		
			
			| 189 | 197 |          currentScreenStack.destroy();
 | 
	
		
			
			| 190 | 198 |          removeView(currentScreenStack.peek());
 | 
	
		
			
			| 191 | 199 |  
 | 
	
		
			
			| 192 |  | -        ScreenStack newStack = new ScreenStack(activity, this, this);
 | 
	
		
			
			|  | 200 | +        ScreenStack newStack = new ScreenStack(activity, this, params.navigatorId, this);
 | 
	
		
			
			| 193 | 201 |          LayoutParams lp = createScreenLayoutParams(params);
 | 
	
		
			
			| 194 | 202 |          newStack.pushInitialScreen(params, lp);
 | 
	
		
			
			| 195 | 203 |          screenStacks[currentStackIndex] = newStack;
 | 
	
	
		
			
			|  | @@ -220,19 +228,32 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
 | 
	
		
			
			| 220 | 228 |      }
 | 
	
		
			
			| 221 | 229 |  
 | 
	
		
			
			| 222 | 230 |      private void showStackAndUpdateStyle(ScreenStack newStack) {
 | 
	
		
			
			| 223 |  | -        newStack.showFirstScreen();
 | 
	
		
			
			|  | 231 | +        newStack.show();
 | 
	
		
			
			| 224 | 232 |          bottomTabs.setStyleFromScreen(newStack.getCurrentScreenStyleParams());
 | 
	
		
			
			| 225 | 233 |      }
 | 
	
		
			
			| 226 | 234 |  
 | 
	
		
			
			| 227 | 235 |      private void hideCurrentStack() {
 | 
	
		
			
			| 228 | 236 |          ScreenStack currentScreenStack = getCurrentScreenStack();
 | 
	
		
			
			| 229 |  | -        currentScreenStack.hideScreen();
 | 
	
		
			
			|  | 237 | +        currentScreenStack.hide();
 | 
	
		
			
			| 230 | 238 |      }
 | 
	
		
			
			| 231 | 239 |  
 | 
	
		
			
			| 232 | 240 |      private ScreenStack getCurrentScreenStack() {
 | 
	
		
			
			| 233 | 241 |          return screenStacks[currentStackIndex];
 | 
	
		
			
			| 234 | 242 |      }
 | 
	
		
			
			| 235 | 243 |  
 | 
	
		
			
			|  | 244 | +    private @Nullable ScreenStack getScreenStack(String navigatorId) {
 | 
	
		
			
			|  | 245 | +        for (ScreenStack screenStack : screenStacks) {
 | 
	
		
			
			|  | 246 | +            if (screenStack.getNavigatorId().equals(navigatorId)) {
 | 
	
		
			
			|  | 247 | +                return screenStack;
 | 
	
		
			
			|  | 248 | +            }
 | 
	
		
			
			|  | 249 | +        }
 | 
	
		
			
			|  | 250 | +        return null;
 | 
	
		
			
			|  | 251 | +    }
 | 
	
		
			
			|  | 252 | +
 | 
	
		
			
			|  | 253 | +    private boolean isCurrentStack(ScreenStack screenStack) {
 | 
	
		
			
			|  | 254 | +        return getCurrentScreenStack() == screenStack;
 | 
	
		
			
			|  | 255 | +    }
 | 
	
		
			
			|  | 256 | +
 | 
	
		
			
			| 236 | 257 |      private void setBottomTabsStyleFromCurrentScreen() {
 | 
	
		
			
			| 237 | 258 |          bottomTabs.setStyleFromScreen(getCurrentScreenStack().getCurrentScreenStyleParams());
 | 
	
		
			
			| 238 | 259 |      }
 | 
	
	
		
			
			|  | @@ -248,7 +269,6 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom
 | 
	
		
			
			| 248 | 269 |              });
 | 
	
		
			
			| 249 | 270 |              return true;
 | 
	
		
			
			| 250 | 271 |          }
 | 
	
		
			
			| 251 |  | -
 | 
	
		
			
			| 252 | 272 |          return false;
 | 
	
		
			
			| 253 | 273 |      }
 | 
	
		
			
			| 254 | 274 |  
 |