|
@@ -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
|
|