Browse Source

modalController

Daniel Zlotin 8 years ago
parent
commit
c50f20ccf3

+ 17
- 25
android/app/src/main/java/com/reactnativenavigation/controllers/ModalController.java View File

3
 import android.support.annotation.Nullable;
3
 import android.support.annotation.Nullable;
4
 
4
 
5
 import com.reactnativenavigation.modal.RnnModal;
5
 import com.reactnativenavigation.modal.RnnModal;
6
-import com.reactnativenavigation.utils.RefUtils;
7
 
6
 
8
-import java.lang.ref.WeakReference;
9
 import java.util.Stack;
7
 import java.util.Stack;
10
 
8
 
11
-/**
12
- * Created by guyc on 06/05/16.
13
- */
14
 public class ModalController {
9
 public class ModalController {
15
-    private static ModalController sInstance;
16
 
10
 
17
-    private final Stack<WeakReference<RnnModal>> mModals;
11
+    private final Stack<RnnModal> modals;
18
 
12
 
19
-    private ModalController() {
20
-        mModals = new Stack<>();
21
-    }
22
-
23
-    public static synchronized ModalController getInstance() {
24
-        if (sInstance == null) {
25
-            sInstance = new ModalController();
26
-        }
27
-
28
-        return sInstance;
13
+    public ModalController() {
14
+        modals = new Stack<>();
29
     }
15
     }
30
 
16
 
31
     public void add(RnnModal modal) {
17
     public void add(RnnModal modal) {
32
-        mModals.add(new WeakReference<>(modal));
18
+        modals.add(modal);
33
     }
19
     }
34
 
20
 
35
     public boolean isModalDisplayed() {
21
     public boolean isModalDisplayed() {
36
-        return mModals.size() != 0;
22
+        return !modals.isEmpty();
37
     }
23
     }
38
 
24
 
39
     @Nullable
25
     @Nullable
40
     public RnnModal get() {
26
     public RnnModal get() {
41
-        return isModalDisplayed() ? RefUtils.get(mModals.peek()) : null;
27
+        return isModalDisplayed() ? modals.peek() : null;
42
     }
28
     }
43
 
29
 
44
     public void remove() {
30
     public void remove() {
45
         if (isModalDisplayed()) {
31
         if (isModalDisplayed()) {
46
-            mModals.pop();
32
+            modals.pop();
47
         }
33
         }
48
     }
34
     }
49
 
35
 
54
     }
40
     }
55
 
41
 
56
     public void dismissModal() {
42
     public void dismissModal() {
57
-        WeakReference<RnnModal> ref = mModals.pop();
58
-        RnnModal modal = RefUtils.get(ref);
59
-        if (modal != null) {
60
-            modal.dismiss();
43
+        if (isModalDisplayed()) {
44
+            modals.pop().dismiss();
61
         }
45
         }
62
     }
46
     }
47
+
48
+    public void onDestroy() {
49
+
50
+    }
51
+
52
+    public boolean onBackPressed() {
53
+        return false;
54
+    }
63
 }
55
 }

android/app/src/main/java/com/reactnativenavigation/activities/NavigationActivity.java → android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivity.java View File

1
-package com.reactnativenavigation.activities;
1
+package com.reactnativenavigation.controllers;
2
 
2
 
3
 import android.app.Activity;
3
 import android.app.Activity;
4
 import android.content.Intent;
4
 import android.content.Intent;
34
      * This is somewhat weird, and in the future either fully support multiple activities, OR a single activity with changing contentView ala ReactNative impl.
34
      * This is somewhat weird, and in the future either fully support multiple activities, OR a single activity with changing contentView ala ReactNative impl.
35
      */
35
      */
36
     private static Activity currentActivity;
36
     private static Activity currentActivity;
37
+    private ModalController modalController;
38
+
37
 
39
 
38
     @Override
40
     @Override
39
     protected void onCreate(Bundle savedInstanceState) {
41
     protected void onCreate(Bundle savedInstanceState) {
40
         super.onCreate(savedInstanceState);
42
         super.onCreate(savedInstanceState);
43
+        modalController = new ModalController();
41
         navigationReactInstance = new NavigationReactInstance(this);
44
         navigationReactInstance = new NavigationReactInstance(this);
42
         navigationReactInstance.startReactContextOnceInBackgroundAndExecuteJS();
45
         navigationReactInstance.startReactContextOnceInBackgroundAndExecuteJS();
43
         permissionToShowRedboxIfNeeded();
46
         permissionToShowRedboxIfNeeded();
59
 
62
 
60
     @Override
63
     @Override
61
     protected void onDestroy() {
64
     protected void onDestroy() {
65
+        modalController.onDestroy();
66
+        layout.onDestroy();
62
         super.onDestroy();
67
         super.onDestroy();
63
         if (currentActivity == null || currentActivity.isFinishing()) {
68
         if (currentActivity == null || currentActivity.isFinishing()) {
64
             navigationReactInstance.onHostDestroy();
69
             navigationReactInstance.onHostDestroy();