Kaynağa Gözat

fragmentCreatorPassProps for FragmentScreen

Daniel Zlotin 8 yıl önce
ebeveyn
işleme
32f4a175e8

+ 1
- 0
android/app/src/main/java/com/reactnativenavigation/params/ScreenParams.java Dosyayı Görüntüle

@@ -13,6 +13,7 @@ public class ScreenParams {
13 13
     public StyleParams styleParams;
14 14
     public List<TopTabParams> topTabParams;
15 15
     public String fragmentCreatorClassName;
16
+    public Bundle fragmentCreatorPassProps;
16 17
     public boolean animateScreenTransitions;
17 18
 
18 19
     public String tabLabel;

+ 2
- 0
android/app/src/main/java/com/reactnativenavigation/params/parsers/ScreenParamsParser.java Dosyayı Görüntüle

@@ -19,6 +19,7 @@ public class ScreenParamsParser extends Parser {
19 19
     private static final String STYLE_PARAMS = "styleParams";
20 20
     private static final String TOP_TABS = "topTabs";
21 21
     private static final String FRAGMENT_CREATOR_CLASS_NAME = "fragmentCreatorClassName";
22
+    private static final String FRAGMENT_CREATOR_PASS_PROPS = "fragmentCreatorPassProps";
22 23
 
23 24
     @SuppressWarnings("ConstantConditions")
24 25
     public static ScreenParams parse(Bundle params) {
@@ -42,6 +43,7 @@ public class ScreenParamsParser extends Parser {
42 43
         }
43 44
         if (hasKey(params, FRAGMENT_CREATOR_CLASS_NAME)) {
44 45
             result.fragmentCreatorClassName = params.getString(FRAGMENT_CREATOR_CLASS_NAME);
46
+            result.fragmentCreatorPassProps = params.getBundle(FRAGMENT_CREATOR_PASS_PROPS);
45 47
         }
46 48
         if (hasKey(params, "label")) {
47 49
             result.tabLabel = params.getString("label");

+ 2
- 2
android/app/src/main/java/com/reactnativenavigation/screens/FragmentScreen.java Dosyayı Görüntüle

@@ -89,7 +89,7 @@ public class FragmentScreen extends Screen {
89 89
             String className = screenParams.fragmentCreatorClassName;
90 90
             Class<?> fragmentCreatorClass = Class.forName(className);
91 91
             Method method = fragmentCreatorClass.getMethod(CONTRACT_GET_FRAGMENT, Bundle.class);
92
-            return (android.app.Fragment) method.invoke(null, new Bundle());
92
+            return (android.app.Fragment) method.invoke(null, screenParams.fragmentCreatorPassProps);
93 93
         } catch (NoSuchMethodException noSuchMethod) {
94 94
             return null;
95 95
         }
@@ -101,7 +101,7 @@ public class FragmentScreen extends Screen {
101 101
             String className = screenParams.fragmentCreatorClassName;
102 102
             Class<?> fragmentCreatorClass = Class.forName(className);
103 103
             Method method = fragmentCreatorClass.getMethod(CONTRACT_GET_SUPPORT_FRAGMENT, Bundle.class);
104
-            return (android.support.v4.app.Fragment) method.invoke(null, new Bundle());
104
+            return (android.support.v4.app.Fragment) method.invoke(null, screenParams.fragmentCreatorPassProps);
105 105
         } catch (NoSuchMethodException noSuchMethod) {
106 106
             return null;
107 107
         }