| 
				
			 | 
			
			
				@@ -164,18 +164,20 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom 
			 | 
		
	
		
			
			| 
				164
			 | 
			
				164
			 | 
			
			
				         } 
			 | 
		
	
		
			
			| 
				165
			 | 
			
				165
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				166
			 | 
			
				166
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				167
			 | 
			
			
				+    public void selectBottomTab(String navigatorId, Integer index) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				168
			 | 
			
			
				+        if (index != null) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				169
			 | 
			
			
				+            bottomTabs.setCurrentItem(index); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				170
			 | 
			
			
				+        } else { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				171
			 | 
			
			
				+            bottomTabs.setCurrentItem(getScreenStackIndex(navigatorId)); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				172
			 | 
			
			
				+        } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				173
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				174
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				167
			 | 
			
				175
			 | 
			
			
				     @Override 
			 | 
		
	
		
			
			| 
				168
			 | 
			
				176
			 | 
			
			
				     public void push(ScreenParams screenParams) { 
			 | 
		
	
		
			
			| 
				169
			 | 
			
				177
			 | 
			
			
				         ScreenStack screenStack = getScreenStack(screenParams.getNavigatorId()); 
			 | 
		
	
		
			
			| 
				170
			 | 
			
				
			 | 
			
			
				-        if (screenStack == null) { 
			 | 
		
	
		
			
			| 
				171
			 | 
			
				
			 | 
			
			
				-            return; 
			 | 
		
	
		
			
			| 
				172
			 | 
			
				
			 | 
			
			
				-        } 
			 | 
		
	
		
			
			| 
				173
			 | 
			
				
			 | 
			
			
				- 
			 | 
		
	
		
			
			| 
				
			 | 
			
				178
			 | 
			
			
				+        screenStack.push(screenParams, createScreenLayoutParams(screenParams)); 
			 | 
		
	
		
			
			| 
				174
			 | 
			
				179
			 | 
			
			
				         if (isCurrentStack(screenStack)) { 
			 | 
		
	
		
			
			| 
				175
			 | 
			
				
			 | 
			
			
				-            screenStack.push(screenParams, createScreenLayoutParams(screenParams)); 
			 | 
		
	
		
			
			| 
				176
			 | 
			
				180
			 | 
			
			
				             bottomTabs.setStyleFromScreen(screenParams.styleParams); 
			 | 
		
	
		
			
			| 
				177
			 | 
			
				
			 | 
			
			
				-        } else { 
			 | 
		
	
		
			
			| 
				178
			 | 
			
				
			 | 
			
			
				-            screenStack.push(screenParams, createScreenLayoutParams(screenParams)); 
			 | 
		
	
		
			
			| 
				179
			 | 
			
				181
			 | 
			
			
				         } 
			 | 
		
	
		
			
			| 
				180
			 | 
			
				182
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				181
			 | 
			
				183
			 | 
			
			
				  
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -245,13 +247,24 @@ public class BottomTabsLayout extends RelativeLayout implements Layout, AHBottom 
			 | 
		
	
		
			
			| 
				245
			 | 
			
				247
			 | 
			
			
				         return screenStacks[currentStackIndex]; 
			 | 
		
	
		
			
			| 
				246
			 | 
			
				248
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				247
			 | 
			
				249
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				248
			 | 
			
				
			 | 
			
			
				-    private @Nullable ScreenStack getScreenStack(String navigatorId) { 
			 | 
		
	
		
			
			| 
				249
			 | 
			
				
			 | 
			
			
				-        for (ScreenStack screenStack : screenStacks) { 
			 | 
		
	
		
			
			| 
				250
			 | 
			
				
			 | 
			
			
				-            if (screenStack.getNavigatorId().equals(navigatorId)) { 
			 | 
		
	
		
			
			| 
				251
			 | 
			
				
			 | 
			
			
				-                return screenStack; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				250
			 | 
			
			
				+    private @NonNull ScreenStack getScreenStack(String navigatorId) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				251
			 | 
			
			
				+        int index = getScreenStackIndex(navigatorId); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				252
			 | 
			
			
				+        return screenStacks[index]; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				253
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				254
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				255
			 | 
			
			
				+    private int getScreenStackIndex(String navigatorId) throws ScreenStackNotFoundException { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				256
			 | 
			
			
				+        for (int i = 0; i < screenStacks.length; i++) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				257
			 | 
			
			
				+            if (screenStacks[i].getNavigatorId().equals(navigatorId)) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				258
			 | 
			
			
				+                return i; 
			 | 
		
	
		
			
			| 
				252
			 | 
			
				259
			 | 
			
			
				             } 
			 | 
		
	
		
			
			| 
				253
			 | 
			
				260
			 | 
			
			
				         } 
			 | 
		
	
		
			
			| 
				254
			 | 
			
				
			 | 
			
			
				-        return null; 
			 | 
		
	
		
			
			| 
				
			 | 
			
				261
			 | 
			
			
				+        throw new ScreenStackNotFoundException("Stack " + navigatorId + " not found"); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				262
			 | 
			
			
				+    } 
			 | 
		
	
		
			
			| 
				
			 | 
			
				263
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				264
			 | 
			
			
				+    private class ScreenStackNotFoundException extends RuntimeException { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				265
			 | 
			
			
				+        public ScreenStackNotFoundException(String navigatorId) { 
			 | 
		
	
		
			
			| 
				
			 | 
			
				266
			 | 
			
			
				+            super(navigatorId); 
			 | 
		
	
		
			
			| 
				
			 | 
			
				267
			 | 
			
			
				+        } 
			 | 
		
	
		
			
			| 
				255
			 | 
			
				268
			 | 
			
			
				     } 
			 | 
		
	
		
			
			| 
				256
			 | 
			
				269
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				257
			 | 
			
				270
			 | 
			
			
				     private boolean isCurrentStack(ScreenStack screenStack) { 
			 |