Daniel Zlotin 8 jaren geleden
bovenliggende
commit
a31bdc8ac6

+ 1
- 1
lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java Bestand weergeven

69
 		handle(new Runnable() {
69
 		handle(new Runnable() {
70
 			@Override
70
 			@Override
71
 			public void run() {
71
 			public void run() {
72
-//				store.getViewController(onContainerId).getStackController().popTo(store.getViewController(toContainerId));
72
+				navigator().popTo(onContainerId, toContainerId);
73
 			}
73
 			}
74
 		});
74
 		});
75
 	}
75
 	}

+ 7
- 0
lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/Navigator.java Bestand weergeven

78
 			parentStackController.pop();
78
 			parentStackController.pop();
79
 		}
79
 		}
80
 	}
80
 	}
81
+
82
+	public void popTo(final String fromId, final String toId) {
83
+		StackController parentStackController = findParentStackControllerForChildId(fromId);
84
+		if (parentStackController != null) {
85
+			parentStackController.popTo(findControllerById(toId));
86
+		}
87
+	}
81
 }
88
 }

+ 19
- 0
lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/NavigatorTest.java Bestand weergeven

123
 		stack1.push(child1);
123
 		stack1.push(child1);
124
 		stack2.push(child2);
124
 		stack2.push(child2);
125
 		stack2.push(child3);
125
 		stack2.push(child3);
126
+		stack2.push(new SimpleViewController(activity, "child4"));
126
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
127
 		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
127
 		uut.setRoot(bottomTabsController);
128
 		uut.setRoot(bottomTabsController);
128
 
129
 
129
 		uut.pop(child2.getId());
130
 		uut.pop(child2.getId());
130
 
131
 
132
+		assertThat(stack2.getChildControllers()).containsOnly(child2, child3);
133
+	}
134
+
135
+	@Test
136
+	public void popTo_FromCorrectStackUpToChild() throws Exception {
137
+		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
138
+		StackController stack1 = new StackController(activity, "stack1");
139
+		StackController stack2 = new StackController(activity, "stack2");
140
+		stack1.push(child1);
141
+		stack2.push(child2);
142
+		stack2.push(child3);
143
+		stack2.push(new SimpleViewController(activity, "child4"));
144
+		stack2.push(new SimpleViewController(activity, "child5"));
145
+		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
146
+		uut.setRoot(bottomTabsController);
147
+
148
+		uut.popTo(child2.getId(), child2.getId());
149
+
131
 		assertThat(stack2.getChildControllers()).containsOnly(child2);
150
 		assertThat(stack2.getChildControllers()).containsOnly(child2);
132
 	}
151
 	}
133
 
152