瀏覽代碼

Add a navigator instance to SideMenu

Guy Carmeli 8 年之前
父節點
當前提交
41d43d8b6c

+ 9
- 5
android/app/src/main/java/com/reactnativenavigation/layouts/SingleScreenLayout.java 查看文件

@@ -24,7 +24,7 @@ public class SingleScreenLayout extends RelativeLayout implements Layout {
24 24
     private final SideMenuParams sideMenuParams;
25 25
     private ScreenStack stack;
26 26
     private TitleBarBackButtonListener titleBarBackButtonListener;
27
-    private SideMenu sideMenu;
27
+    private @Nullable SideMenu sideMenu;
28 28
 
29 29
     public SingleScreenLayout(AppCompatActivity activity, ScreenParams screenParams,
30 30
                               TitleBarBackButtonListener titleBarBackButtonListener) {
@@ -44,15 +44,16 @@ public class SingleScreenLayout extends RelativeLayout implements Layout {
44 44
         if (sideMenuParams == null) {
45 45
             createStack(this);
46 46
         } else {
47
-            createSideMenu();
47
+            sideMenu = createSideMenu();
48 48
             createStack(sideMenu.getContentContainer());
49 49
         }
50 50
     }
51 51
 
52
-    private void createSideMenu() {
53
-        sideMenu = new SideMenu(getContext(), sideMenuParams);
52
+    private SideMenu createSideMenu() {
53
+        SideMenu sideMenu = new SideMenu(getContext(), sideMenuParams);
54 54
         RelativeLayout.LayoutParams lp = new LayoutParams(MATCH_PARENT, MATCH_PARENT);
55 55
         addView(sideMenu, lp);
56
+        return sideMenu;
56 57
     }
57 58
 
58 59
     private void createStack(RelativeLayout parent) {
@@ -78,6 +79,9 @@ public class SingleScreenLayout extends RelativeLayout implements Layout {
78 79
     @Override
79 80
     public void destroy() {
80 81
         stack.destroy();
82
+        if (sideMenu != null) {
83
+            sideMenu.destroy();
84
+        }
81 85
     }
82 86
 
83 87
     @Override
@@ -98,7 +102,7 @@ public class SingleScreenLayout extends RelativeLayout implements Layout {
98 102
 
99 103
     @Override
100 104
     public void newStack(ScreenParams params) {
101
-        RelativeLayout parent = sideMenuParams == null ? this : sideMenu.getContentContainer();
105
+        RelativeLayout parent = sideMenu == null ? this : sideMenu.getContentContainer();
102 106
         createStack(parent);
103 107
     }
104 108
 

+ 1
- 0
android/app/src/main/java/com/reactnativenavigation/params/SideMenuParams.java 查看文件

@@ -6,4 +6,5 @@ public class SideMenuParams {
6 6
     public String screenId;
7 7
     public Bundle navigationParams;
8 8
     public boolean disableOpenGesture;
9
+    public Bundle passProps;
9 10
 }

+ 2
- 0
android/app/src/main/java/com/reactnativenavigation/params/parsers/SideMenuParamsParser.java 查看文件

@@ -9,7 +9,9 @@ public class SideMenuParamsParser extends Parser {
9 9
     public static SideMenuParams parse(Bundle sideMenu) {
10 10
         SideMenuParams result = new SideMenuParams();
11 11
         result.screenId = sideMenu.getString("screenId");
12
+        result.navigationParams = sideMenu.getBundle("navigationParams");
12 13
         result.disableOpenGesture = sideMenu.getBoolean("disableOpenGesture", false);
14
+        result.passProps = sideMenu.getBundle("passProps");
13 15
         return result;
14 16
     }
15 17
 }

+ 5
- 0
android/app/src/main/java/com/reactnativenavigation/views/SideMenu.java 查看文件

@@ -18,6 +18,11 @@ public class SideMenu extends DrawerLayout {
18 18
         return contentContainer;
19 19
     }
20 20
 
21
+    public void destroy() {
22
+        sideMenuView.ensureUnmountOnDetachedFromWindow();
23
+        removeView(sideMenuView);
24
+    }
25
+
21 26
     public SideMenu(Context context, SideMenuParams sideMenuParams) {
22 27
         super(context);
23 28
         createContentContainer();

+ 1
- 0
src/deprecated/platformSpecificDeprecated.android.js 查看文件

@@ -143,6 +143,7 @@ function convertDrawerParamsToSideMenuParams(drawerParams) {
143 143
   result.disableOpenGesture = drawer.disableOpenGesture !== undefined;
144 144
   result.screenId = drawer.left.screen;
145 145
   addNavigatorParams(result);
146
+  result = adaptNavigationParams(result);
146 147
 
147 148
   return result;
148 149
 }