Browse Source

android: no more activity singleton

Daniel Zlotin 7 years ago
parent
commit
6765921bac

+ 0
- 3
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivity.java View File

20
 import java.util.List;
20
 import java.util.List;
21
 
21
 
22
 public class NavigationActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler {
22
 public class NavigationActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler {
23
-    public static NavigationActivity instance;
24
     private ReactNativeHost host;
23
     private ReactNativeHost host;
25
     private View contentView;
24
     private View contentView;
26
 
25
 
27
     @Override
26
     @Override
28
     public void onCreate(Bundle savedInstanceState) {
27
     public void onCreate(Bundle savedInstanceState) {
29
         super.onCreate(savedInstanceState);
28
         super.onCreate(savedInstanceState);
30
-        instance = this;
31
         setContentView(R.layout.splash);
29
         setContentView(R.layout.splash);
32
         host = new ReactNativeHost(getApplication()) {
30
         host = new ReactNativeHost(getApplication()) {
33
             @Override
31
             @Override
84
     @Override
82
     @Override
85
     protected void onDestroy() {
83
     protected void onDestroy() {
86
         super.onDestroy();
84
         super.onDestroy();
87
-        instance = null;
88
         host.getReactInstanceManager().onHostDestroy(this);
85
         host.getReactInstanceManager().onHostDestroy(this);
89
     }
86
     }
90
 
87
 

+ 16
- 12
android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java View File

34
 
34
 
35
     @ReactMethod
35
     @ReactMethod
36
     public void setRoot(final ReadableMap layoutTree) {
36
     public void setRoot(final ReadableMap layoutTree) {
37
-        NavigationActivity.instance.runOnUiThread(new Runnable() {
37
+        getActivity().runOnUiThread(new Runnable() {
38
             @Override
38
             @Override
39
             public void run() {
39
             public void run() {
40
                 LayoutFactory factory =
40
                 LayoutFactory factory =
41
-                        new LayoutFactory(NavigationActivity.instance, new LayoutFactory.ReactRootViewCreator() {
41
+                        new LayoutFactory(getActivity(), new LayoutFactory.ReactRootViewCreator() {
42
                             @Override
42
                             @Override
43
                             public View create(String id, String name) {
43
                             public View create(String id, String name) {
44
-                                ReactRootView rootView = new ReactRootView(NavigationActivity.instance);
44
+                                ReactRootView rootView = new ReactRootView(getActivity());
45
                                 Bundle opts = new Bundle();
45
                                 Bundle opts = new Bundle();
46
                                 opts.putString("id", id);
46
                                 opts.putString("id", id);
47
-                                rootView.startReactApplication(NavigationActivity.instance.getHost().getReactInstanceManager(), name, opts);
47
+                                rootView.startReactApplication(getActivity().getHost().getReactInstanceManager(), name, opts);
48
                                 return rootView;
48
                                 return rootView;
49
                             }
49
                             }
50
                         }, new BottomTabsCreator());
50
                         }, new BottomTabsCreator());
51
 
51
 
52
                 final LayoutNode layoutTreeRoot = readableMapToLayoutNode(layoutTree);
52
                 final LayoutNode layoutTreeRoot = readableMapToLayoutNode(layoutTree);
53
                 final View rootView = factory.create(layoutTreeRoot);
53
                 final View rootView = factory.create(layoutTreeRoot);
54
-                NavigationActivity.instance.setContentView(rootView);
54
+                getActivity().setContentView(rootView);
55
             }
55
             }
56
         });
56
         });
57
     }
57
     }
58
 
58
 
59
+    private NavigationActivity getActivity() {
60
+        return (NavigationActivity) getCurrentActivity();
61
+    }
62
+
59
     @ReactMethod
63
     @ReactMethod
60
     public void push(String onContainerId, final ReadableMap layout) {
64
     public void push(String onContainerId, final ReadableMap layout) {
61
-        NavigationActivity.instance.runOnUiThread(new Runnable() {
65
+        getActivity().runOnUiThread(new Runnable() {
62
             @Override
66
             @Override
63
             public void run() {
67
             public void run() {
64
                 LayoutFactory factory =
68
                 LayoutFactory factory =
65
-                        new LayoutFactory(NavigationActivity.instance, new LayoutFactory.ReactRootViewCreator() {
69
+                        new LayoutFactory(getActivity(), new LayoutFactory.ReactRootViewCreator() {
66
                             @Override
70
                             @Override
67
                             public View create(String id, String name) {
71
                             public View create(String id, String name) {
68
-                                ReactRootView rootView = new ReactRootView(NavigationActivity.instance);
72
+                                ReactRootView rootView = new ReactRootView(getActivity());
69
                                 Bundle opts = new Bundle();
73
                                 Bundle opts = new Bundle();
70
                                 opts.putString("id", id);
74
                                 opts.putString("id", id);
71
-                                rootView.startReactApplication(NavigationActivity.instance.getHost().getReactInstanceManager(), name, opts);
75
+                                rootView.startReactApplication(getActivity().getHost().getReactInstanceManager(), name, opts);
72
                                 return rootView;
76
                                 return rootView;
73
                             }
77
                             }
74
                         }, new BottomTabsCreator());
78
                         }, new BottomTabsCreator());
75
                 final LayoutNode layoutNode = readableMapToLayoutNode(layout);
79
                 final LayoutNode layoutNode = readableMapToLayoutNode(layout);
76
                 final View rootView = factory.create(layoutNode);
80
                 final View rootView = factory.create(layoutNode);
77
-                ((StackLayout) NavigationActivity.instance.getContentView()).push(rootView);
81
+                ((StackLayout) getActivity().getContentView()).push(rootView);
78
             }
82
             }
79
         });
83
         });
80
     }
84
     }
81
 
85
 
82
     @ReactMethod
86
     @ReactMethod
83
     public void pop(String onContainerId) {
87
     public void pop(String onContainerId) {
84
-        NavigationActivity.instance.runOnUiThread(new Runnable() {
88
+        getActivity().runOnUiThread(new Runnable() {
85
             @Override
89
             @Override
86
             public void run() {
90
             public void run() {
87
-                ((StackLayout) NavigationActivity.instance.getContentView()).pop();
91
+                ((StackLayout) getActivity().getContentView()).pop();
88
             }
92
             }
89
         });
93
         });
90
     }
94
     }