Browse Source

fragmentCreatorPassProps for FragmentScreen

Daniel Zlotin 8 years ago
parent
commit
32f4a175e8

+ 1
- 0
android/app/src/main/java/com/reactnativenavigation/params/ScreenParams.java View File

13
     public StyleParams styleParams;
13
     public StyleParams styleParams;
14
     public List<TopTabParams> topTabParams;
14
     public List<TopTabParams> topTabParams;
15
     public String fragmentCreatorClassName;
15
     public String fragmentCreatorClassName;
16
+    public Bundle fragmentCreatorPassProps;
16
     public boolean animateScreenTransitions;
17
     public boolean animateScreenTransitions;
17
 
18
 
18
     public String tabLabel;
19
     public String tabLabel;

+ 2
- 0
android/app/src/main/java/com/reactnativenavigation/params/parsers/ScreenParamsParser.java View File

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

+ 2
- 2
android/app/src/main/java/com/reactnativenavigation/screens/FragmentScreen.java View File

89
             String className = screenParams.fragmentCreatorClassName;
89
             String className = screenParams.fragmentCreatorClassName;
90
             Class<?> fragmentCreatorClass = Class.forName(className);
90
             Class<?> fragmentCreatorClass = Class.forName(className);
91
             Method method = fragmentCreatorClass.getMethod(CONTRACT_GET_FRAGMENT, Bundle.class);
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
         } catch (NoSuchMethodException noSuchMethod) {
93
         } catch (NoSuchMethodException noSuchMethod) {
94
             return null;
94
             return null;
95
         }
95
         }
101
             String className = screenParams.fragmentCreatorClassName;
101
             String className = screenParams.fragmentCreatorClassName;
102
             Class<?> fragmentCreatorClass = Class.forName(className);
102
             Class<?> fragmentCreatorClass = Class.forName(className);
103
             Method method = fragmentCreatorClass.getMethod(CONTRACT_GET_SUPPORT_FRAGMENT, Bundle.class);
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
         } catch (NoSuchMethodException noSuchMethod) {
105
         } catch (NoSuchMethodException noSuchMethod) {
106
             return null;
106
             return null;
107
         }
107
         }