|
@@ -1,14 +1,19 @@
|
1
|
1
|
package com.reactnativenavigation.controllers;
|
2
|
2
|
|
3
|
3
|
import android.app.Activity;
|
|
4
|
+import android.content.BroadcastReceiver;
|
|
5
|
+import android.content.Context;
|
4
|
6
|
import android.content.Intent;
|
|
7
|
+import android.content.IntentFilter;
|
5
|
8
|
import android.os.Bundle;
|
|
9
|
+import android.support.v4.content.LocalBroadcastManager;
|
6
|
10
|
import android.support.v7.app.AppCompatActivity;
|
7
|
11
|
import android.view.KeyEvent;
|
8
|
12
|
|
9
|
13
|
import com.facebook.react.ReactPackage;
|
10
|
14
|
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
|
11
|
15
|
import com.facebook.react.shell.MainReactPackage;
|
|
16
|
+import com.reactnativenavigation.NavigationApplication;
|
12
|
17
|
import com.reactnativenavigation.bridge.NavigationReactPackage;
|
13
|
18
|
import com.reactnativenavigation.params.ActivityParams;
|
14
|
19
|
import com.reactnativenavigation.params.parsers.ActivityParamsParser;
|
|
@@ -22,7 +27,7 @@ import java.util.Arrays;
|
22
|
27
|
import java.util.List;
|
23
|
28
|
|
24
|
29
|
|
25
|
|
-public class NavigationActivity extends AppCompatActivity implements NavigationReactInstance.ReactContextCreator, DefaultHardwareBackBtnHandler {
|
|
30
|
+public class NavigationActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler, NavigationReactInstance.OnJsDevReloadListener {
|
26
|
31
|
|
27
|
32
|
public static final String PARAMS_BUNDLE = "PARAMS_BUNDLE";
|
28
|
33
|
/**
|
|
@@ -32,7 +37,6 @@ public class NavigationActivity extends AppCompatActivity implements NavigationR
|
32
|
37
|
* This is somewhat weird, and in the future either fully support multiple activities, OR a single activity with changing contentView ala ReactNative impl.
|
33
|
38
|
*/
|
34
|
39
|
private static Activity currentActivity;
|
35
|
|
- private NavigationReactInstance navigationReactInstance;
|
36
|
40
|
private ModalController modalController;
|
37
|
41
|
private Layout layout = new Layout() {
|
38
|
42
|
@Override
|
|
@@ -59,14 +63,13 @@ public class NavigationActivity extends AppCompatActivity implements NavigationR
|
59
|
63
|
activityParams = ActivityParamsParser.parse(getIntent().getBundleExtra(PARAMS_BUNDLE));
|
60
|
64
|
|
61
|
65
|
modalController = new ModalController();
|
62
|
|
- navigationReactInstance = new NavigationReactInstance(this);
|
63
|
|
- navigationReactInstance.startReactContextOnceInBackgroundAndExecuteJS();
|
|
66
|
+
|
64
|
67
|
RedboxPermission.permissionToShowRedboxIfNeeded(this);
|
65
|
68
|
createLayout();
|
66
|
69
|
}
|
67
|
70
|
|
68
|
71
|
private void createLayout() {
|
69
|
|
- ScreenLayout screenLayout = new ScreenLayout(this, navigationReactInstance.getReactInstanceManager(), activityParams.screenParams);
|
|
72
|
+ ScreenLayout screenLayout = new ScreenLayout(this, activityParams.screenParams);
|
70
|
73
|
setContentView(screenLayout);
|
71
|
74
|
}
|
72
|
75
|
|
|
@@ -74,14 +77,14 @@ public class NavigationActivity extends AppCompatActivity implements NavigationR
|
74
|
77
|
protected void onResume() {
|
75
|
78
|
super.onResume();
|
76
|
79
|
currentActivity = this;
|
77
|
|
- navigationReactInstance.onResume(this, this);
|
|
80
|
+ getNavigationReactInstance().onResume(this, this, this);
|
78
|
81
|
}
|
79
|
82
|
|
80
|
83
|
@Override
|
81
|
84
|
protected void onPause() {
|
82
|
85
|
super.onPause();
|
83
|
86
|
currentActivity = null;
|
84
|
|
- navigationReactInstance.onPause();
|
|
87
|
+ getNavigationReactInstance().onPause();
|
85
|
88
|
}
|
86
|
89
|
|
87
|
90
|
@Override
|
|
@@ -90,23 +93,10 @@ public class NavigationActivity extends AppCompatActivity implements NavigationR
|
90
|
93
|
layout.onDestroy();
|
91
|
94
|
super.onDestroy();
|
92
|
95
|
if (currentActivity == null || currentActivity.isFinishing()) {
|
93
|
|
- navigationReactInstance.onHostDestroy();
|
|
96
|
+ getNavigationReactInstance().onHostDestroy();
|
94
|
97
|
}
|
95
|
98
|
}
|
96
|
99
|
|
97
|
|
-
|
98
|
|
- private NavigationReactInstance getNavigationReactInstance() {
|
99
|
|
- return navigationReactInstance;
|
100
|
|
- }
|
101
|
|
-
|
102
|
|
- @Override
|
103
|
|
- public List<ReactPackage> createReactPackages() {
|
104
|
|
- return Arrays.asList(
|
105
|
|
- new MainReactPackage(),
|
106
|
|
- new NavigationReactPackage()
|
107
|
|
- );
|
108
|
|
- }
|
109
|
|
-
|
110
|
100
|
@Override
|
111
|
101
|
public void onJsDevReload() {
|
112
|
102
|
layout.removeAllReactViews();
|
|
@@ -125,17 +115,20 @@ public class NavigationActivity extends AppCompatActivity implements NavigationR
|
125
|
115
|
if (layout.onBackPressed()) {
|
126
|
116
|
return;
|
127
|
117
|
}
|
128
|
|
- navigationReactInstance.onBackPressed();
|
|
118
|
+ getNavigationReactInstance().onBackPressed();
|
129
|
119
|
}
|
130
|
120
|
|
131
|
121
|
@Override
|
132
|
122
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
133
|
|
- navigationReactInstance.onActivityResult(requestCode, resultCode, data);
|
|
123
|
+ getNavigationReactInstance().onActivityResult(requestCode, resultCode, data);
|
134
|
124
|
}
|
135
|
125
|
|
136
|
126
|
@Override
|
137
|
127
|
public boolean onKeyUp(int keyCode, KeyEvent event) {
|
138
|
|
- return JsDevReloadHandler.onKeyUp(navigationReactInstance.getReactInstanceManager(), getCurrentFocus(), keyCode)
|
139
|
|
- || super.onKeyUp(keyCode, event);
|
|
128
|
+ return JsDevReloadHandler.onKeyUp(getCurrentFocus(), keyCode) || super.onKeyUp(keyCode, event);
|
|
129
|
+ }
|
|
130
|
+
|
|
131
|
+ private NavigationReactInstance getNavigationReactInstance() {
|
|
132
|
+ return NavigationApplication.instance.getNavigationReactInstance();
|
140
|
133
|
}
|
141
|
134
|
}
|