Daniel Zlotin vor 8 Jahren
Ursprung
Commit
78ad32424c

+ 1
- 1
lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java Datei anzeigen

59
 		handle(new Runnable() {
59
 		handle(new Runnable() {
60
 			@Override
60
 			@Override
61
 			public void run() {
61
 			public void run() {
62
-				navigator().pop(onContainerId);
62
+				navigator().popSpecific(onContainerId);
63
 			}
63
 			}
64
 		});
64
 		});
65
 	}
65
 	}

+ 11
- 1
lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/Navigator.java Datei anzeigen

80
 		if (from != null) {
80
 		if (from != null) {
81
 			StackController parentStackController = from.getParentStackController();
81
 			StackController parentStackController = from.getParentStackController();
82
 			if (parentStackController != null) {
82
 			if (parentStackController != null) {
83
-				parentStackController.pop(from);
83
+				parentStackController.pop();
84
+			}
85
+		}
86
+	}
87
+
88
+	public void popSpecific(final String id) {
89
+		ViewController from = findControllerById(id);
90
+		if (from != null) {
91
+			StackController parentStackController = from.getParentStackController();
92
+			if (parentStackController != null) {
93
+				parentStackController.popSpecific(from);
84
 			}
94
 			}
85
 		}
95
 		}
86
 	}
96
 	}

+ 1
- 1
lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/StackController.java Datei anzeigen

42
 		getView().addView(previousTop.getView());
42
 		getView().addView(previousTop.getView());
43
 	}
43
 	}
44
 
44
 
45
-	public void pop(final ViewController childController) {
45
+	public void popSpecific(final ViewController childController) {
46
 		if (stack.isTop(childController.getId())) {
46
 		if (stack.isTop(childController.getId())) {
47
 			pop();
47
 			pop();
48
 		} else {
48
 		} else {

+ 18
- 0
lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/NavigatorTest.java Datei anzeigen

132
 		assertThat(stack2.getChildControllers()).containsOnly(child2, child3);
132
 		assertThat(stack2.getChildControllers()).containsOnly(child2, child3);
133
 	}
133
 	}
134
 
134
 
135
+	@Test
136
+	public void popSpecific() 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
+		SimpleViewController child4 = new SimpleViewController(activity, "child4");
144
+		stack2.push(child4);
145
+		bottomTabsController.setTabs(Arrays.<ViewController>asList(stack1, stack2));
146
+		uut.setRoot(bottomTabsController);
147
+
148
+		uut.popSpecific(child2.getId());
149
+
150
+		assertThat(stack2.getChildControllers()).containsOnly(child4, child3);
151
+	}
152
+
135
 	@Test
153
 	@Test
136
 	public void popTo_FromCorrectStackUpToChild() throws Exception {
154
 	public void popTo_FromCorrectStackUpToChild() throws Exception {
137
 		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");
155
 		BottomTabsController bottomTabsController = new BottomTabsController(activity, "tabsController");

+ 2
- 2
lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/StackControllerTest.java Datei anzeigen

158
 	public void popSpecificWhenTopIsRegularPop() throws Exception {
158
 	public void popSpecificWhenTopIsRegularPop() throws Exception {
159
 		uut.push(child1);
159
 		uut.push(child1);
160
 		uut.push(child2);
160
 		uut.push(child2);
161
-		uut.pop(child2);
161
+		uut.popSpecific(child2);
162
 		assertContainsOnlyId(child1.getId());
162
 		assertContainsOnlyId(child1.getId());
163
 		assertHasSingleChildViewOfController(child1);
163
 		assertHasSingleChildViewOfController(child1);
164
 	}
164
 	}
169
 		uut.push(child2);
169
 		uut.push(child2);
170
 		assertHasSingleChildViewOfController(child2);
170
 		assertHasSingleChildViewOfController(child2);
171
 
171
 
172
-		uut.pop(child1);
172
+		uut.popSpecific(child1);
173
 		assertContainsOnlyId(child2.getId());
173
 		assertContainsOnlyId(child2.getId());
174
 		assertHasSingleChildViewOfController(child2);
174
 		assertHasSingleChildViewOfController(child2);
175
 	}
175
 	}