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