Guy Carmeli il y a 8 ans
Parent
révision
3f75ad2f2c

+ 5
- 1
android/app/src/main/java/com/reactnativenavigation/layouts/ScreenLayout.java Voir le fichier

@@ -35,9 +35,13 @@ public class ScreenLayout extends LinearLayout implements ScrollDirectionListene
35 35
 
36 36
     private void createViews() {
37 37
         addTopBar();
38
+        addTitleBar();
39
+        addContentView();
40
+    }
41
+
42
+    private void addTitleBar() {
38 43
         topBar.addTitleBarAndSetButtons(screenParams.buttons);
39 44
         topBar.setTitle(screenParams.title);
40
-        addContentView();
41 45
     }
42 46
 
43 47
     private void addTopBar() {

+ 11
- 0
android/app/src/main/java/com/reactnativenavigation/params/parsers/Parser.java Voir le fichier

@@ -0,0 +1,11 @@
1
+package com.reactnativenavigation.params.parsers;
2
+
3
+import android.os.Bundle;
4
+
5
+public class Parser {
6
+
7
+    protected static boolean hasKey(Bundle bundle, String key) {
8
+        return bundle.keySet().contains(key);
9
+    }
10
+
11
+}

+ 10
- 4
android/app/src/main/java/com/reactnativenavigation/params/parsers/TitleBarButtonParamsParser.java Voir le fichier

@@ -8,7 +8,7 @@ import com.reactnativenavigation.react.ImageLoader;
8 8
 import java.util.ArrayList;
9 9
 import java.util.List;
10 10
 
11
-public class TitleBarButtonParamsParser {
11
+public class TitleBarButtonParamsParser extends Parser {
12 12
     public static List<TitleBarButtonParams> parse(Bundle params) {
13 13
         List<TitleBarButtonParams> result = new ArrayList<>();
14 14
         if (params == null) {
@@ -23,15 +23,21 @@ public class TitleBarButtonParamsParser {
23 23
 
24 24
     private static TitleBarButtonParams parseItem(Bundle bundle) {
25 25
         TitleBarButtonParams result = new TitleBarButtonParams();
26
-        result.label = bundle.getString("label");
27
-        result.icon = ImageLoader.loadImage(bundle.getString("icon"));
26
+        result.label = bundle.getString("title");
27
+        if (hasKey(bundle,"icon")) {
28
+            result.icon = ImageLoader.loadImage(bundle.getString("icon"));
29
+        }
28 30
         result.color = ColorParser.parse(bundle.getString("color"));
29 31
         result.showAsAction = parseShowAsAction(bundle.getString("showAsAction"));
30
-        result.enabled = bundle.getBoolean("enabled");
32
+        result.enabled = bundle.getBoolean("enabled", true);
31 33
         return result;
32 34
     }
33 35
 
34 36
     private static TitleBarButtonParams.ShowAsAction parseShowAsAction(String showAsAction) {
37
+        if (showAsAction == null) {
38
+            return TitleBarButtonParams.ShowAsAction.IfRoom;
39
+        }
40
+
35 41
         switch (showAsAction) {
36 42
             case "always":
37 43
                 return TitleBarButtonParams.ShowAsAction.Always;

+ 5
- 2
src/Screen.js Voir le fichier

@@ -6,6 +6,7 @@ import {
6 6
 } from 'react-native';
7 7
 import platformSpecific from './deprecated/platformSpecificDeprecated';
8 8
 import Navigation from './Navigation';
9
+import _ from 'lodash';
9 10
 
10 11
 const _allNavigatorEventHandlers = {};
11 12
 
@@ -137,9 +138,11 @@ export default class Screen extends Component {
137 138
 
138 139
   constructor(props) {
139 140
     super(props);
140
-    if (props.navigatorID) {
141
-      this.navigator = new Navigator(props.navigatorID, props.navigatorEventID);
141
+    // TODO: remove this shit
142
+    if (!props.navigatorID) {
143
+      props.navigatorID = _.uniqueId('navigatorId');
142 144
     }
145
+    this.navigator = new Navigator(props.navigatorID, props.navigatorEventID);
143 146
   }
144 147
 
145 148
   componentWillUnmount() {