Browse Source

pass down lifecycle methods to children

Daniel Zlotin 7 years ago
parent
commit
d7411e0a45

+ 8
- 1
lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/ParentController.java View File

52
 		}
52
 		}
53
 	}
53
 	}
54
 
54
 
55
-
56
 	@Override
55
 	@Override
57
 	public void onDisappear() {
56
 	public void onDisappear() {
58
 		super.onDisappear();
57
 		super.onDisappear();
60
 			child.onDisappear();
59
 			child.onDisappear();
61
 		}
60
 		}
62
 	}
61
 	}
62
+
63
+	@Override
64
+	public void onDestroy() {
65
+		super.onDestroy();
66
+		for (ViewController child : getChildControllers()) {
67
+			child.onDestroy();
68
+		}
69
+	}
63
 }
70
 }

+ 9
- 0
lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/ParentControllerTest.java View File

100
 		verify(child1, times(1)).onDisappear();
100
 		verify(child1, times(1)).onDisappear();
101
 	}
101
 	}
102
 
102
 
103
+	@Test
104
+	public void lifecycleMethodsPassDownToChildren_onDestroy() throws Exception {
105
+		ViewController child1 = spy(new SimpleViewController(activity, "child1"));
106
+		children.add(child1);
107
+
108
+		verify(child1, times(0)).onDestroy();
109
+		uut.onDestroy();
110
+		verify(child1, times(1)).onDestroy();
111
+	}
103
 }
112
 }