Просмотр исходного кода

Emit appLaunchedEvent and call setRoot

Guy Carmeli 8 лет назад
Родитель
Сommit
28ab2c2c60

+ 11
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivity.java Просмотреть файл

3
 import android.os.Bundle;
3
 import android.os.Bundle;
4
 import android.support.v7.app.AppCompatActivity;
4
 import android.support.v7.app.AppCompatActivity;
5
 
5
 
6
+import com.facebook.react.ReactInstanceManager;
6
 import com.facebook.react.ReactNativeHost;
7
 import com.facebook.react.ReactNativeHost;
7
 import com.facebook.react.ReactPackage;
8
 import com.facebook.react.ReactPackage;
9
+import com.facebook.react.bridge.ReactContext;
8
 import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
10
 import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
9
 import com.facebook.react.shell.MainReactPackage;
11
 import com.facebook.react.shell.MainReactPackage;
10
 import com.reactnativenavigation.R;
12
 import com.reactnativenavigation.R;
13
+import com.reactnativenavigation.react.NavigationEventEmitter;
11
 import com.reactnativenavigation.react.NavigationPackage;
14
 import com.reactnativenavigation.react.NavigationPackage;
12
 import com.reactnativenavigation.react.ReactDevPermission;
15
 import com.reactnativenavigation.react.ReactDevPermission;
13
 
16
 
42
             return;
45
             return;
43
         }
46
         }
44
 
47
 
48
+        host.getReactInstanceManager().addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
49
+            @Override
50
+            public void onReactContextInitialized(ReactContext context) {
51
+                new NavigationEventEmitter(context).emitAppLaunched();
52
+            }
53
+        });
45
         host.getReactInstanceManager().createReactContextInBackground();
54
         host.getReactInstanceManager().createReactContextInBackground();
55
+
56
+
46
     }
57
     }
47
 
58
 
48
     @Override
59
     @Override

+ 9
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationApplication.java Просмотреть файл

2
 
2
 
3
 import android.app.Application;
3
 import android.app.Application;
4
 
4
 
5
+import com.facebook.react.bridge.ReactContext;
6
+import com.reactnativenavigation.react.NavigationEventEmitter;
7
+
5
 public abstract class NavigationApplication extends Application {
8
 public abstract class NavigationApplication extends Application {
6
     public static NavigationApplication instance;
9
     public static NavigationApplication instance;
10
+    public NavigationEventEmitter eventEmitter;
7
 
11
 
8
     @Override
12
     @Override
9
     public void onCreate() {
13
     public void onCreate() {
10
         super.onCreate();
14
         super.onCreate();
11
         instance = this;
15
         instance = this;
16
+
12
     }
17
     }
13
 
18
 
14
     public abstract boolean isDebug();
19
     public abstract boolean isDebug();
20
+
21
+    public void onReactContextInitialized(ReactContext context) {
22
+        eventEmitter = new NavigationEventEmitter(context);
23
+    }
15
 }
24
 }

+ 24
- 0
android/app/src/main/java/com/reactnativenavigation/react/NavigationEventEmitter.java Просмотреть файл

1
+package com.reactnativenavigation.react;
2
+
3
+import com.facebook.react.bridge.Arguments;
4
+import com.facebook.react.bridge.ReactContext;
5
+import com.facebook.react.bridge.WritableMap;
6
+import com.facebook.react.modules.core.DeviceEventManagerModule;
7
+
8
+public class NavigationEventEmitter {
9
+
10
+    private final DeviceEventManagerModule.RCTDeviceEventEmitter emitter;
11
+
12
+    public NavigationEventEmitter(ReactContext reactContext) {
13
+        this.emitter = reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class);
14
+    }
15
+
16
+    public void emitAppLaunched() {
17
+        emit("RNN.appLaunched");
18
+    }
19
+
20
+    private void emit(String eventName) {
21
+        WritableMap data = Arguments.createMap();
22
+        emitter.emit(eventName, data);
23
+    }
24
+}

+ 8
- 1
android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java Просмотреть файл

2
 
2
 
3
 import com.facebook.react.bridge.ReactApplicationContext;
3
 import com.facebook.react.bridge.ReactApplicationContext;
4
 import com.facebook.react.bridge.ReactContextBaseJavaModule;
4
 import com.facebook.react.bridge.ReactContextBaseJavaModule;
5
+import com.facebook.react.bridge.ReactMethod;
6
+import com.facebook.react.bridge.ReadableMap;
5
 
7
 
6
 public class NavigationModule extends ReactContextBaseJavaModule {
8
 public class NavigationModule extends ReactContextBaseJavaModule {
7
-    public static final String NAME = "NavigationModule";
9
+    public static final String NAME = "RNNBridgeModule";
8
 
10
 
9
     public NavigationModule(ReactApplicationContext reactContext) {
11
     public NavigationModule(ReactApplicationContext reactContext) {
10
         super(reactContext);
12
         super(reactContext);
14
     public String getName() {
16
     public String getName() {
15
         return NAME;
17
         return NAME;
16
     }
18
     }
19
+
20
+    @ReactMethod
21
+    public void setRoot(ReadableMap layoutTree) {
22
+        
23
+    }
17
 }
24
 }