Browse Source

layout methods

Daniel Zlotin 8 years ago
parent
commit
6fd77cac86

+ 5
- 20
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivity.java View File

2
 
2
 
3
 import android.app.Activity;
3
 import android.app.Activity;
4
 import android.content.Intent;
4
 import android.content.Intent;
5
-import android.os.Build;
6
 import android.os.Bundle;
5
 import android.os.Bundle;
7
-import android.provider.Settings;
8
 import android.support.v7.app.AppCompatActivity;
6
 import android.support.v7.app.AppCompatActivity;
9
-import android.util.Log;
10
 import android.view.KeyEvent;
7
 import android.view.KeyEvent;
11
-import android.widget.Toast;
12
 
8
 
13
 import com.facebook.react.ReactPackage;
9
 import com.facebook.react.ReactPackage;
14
-import com.facebook.react.common.ReactConstants;
15
 import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
10
 import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
16
 import com.facebook.react.shell.MainReactPackage;
11
 import com.facebook.react.shell.MainReactPackage;
17
-import com.reactnativenavigation.BuildConfig;
18
 import com.reactnativenavigation.bridge.NavigationReactPackage;
12
 import com.reactnativenavigation.bridge.NavigationReactPackage;
19
-import com.reactnativenavigation.controllers.ModalController;
13
+import com.reactnativenavigation.layouts.Layout;
20
 import com.reactnativenavigation.react.JsDevReloadHandler;
14
 import com.reactnativenavigation.react.JsDevReloadHandler;
21
 import com.reactnativenavigation.react.NavigationReactInstance;
15
 import com.reactnativenavigation.react.NavigationReactInstance;
16
+import com.reactnativenavigation.react.RedboxPermission;
22
 
17
 
23
 import java.util.Arrays;
18
 import java.util.Arrays;
24
 import java.util.List;
19
 import java.util.List;
26
 
21
 
27
 public class NavigationActivity extends AppCompatActivity implements NavigationReactInstance.ReactContextCreator, DefaultHardwareBackBtnHandler {
22
 public class NavigationActivity extends AppCompatActivity implements NavigationReactInstance.ReactContextCreator, DefaultHardwareBackBtnHandler {
28
 
23
 
29
-    private NavigationReactInstance navigationReactInstance;
30
     /**
24
     /**
31
      * Although we start multiple activities, we make sure to pass Intent.CLEAR_TASK | Intent.NEW_TASK
25
      * Although we start multiple activities, we make sure to pass Intent.CLEAR_TASK | Intent.NEW_TASK
32
      * So that we actually have only 1 instance of the activity running at one time.
26
      * So that we actually have only 1 instance of the activity running at one time.
34
      * This is somewhat weird, and in the future either fully support multiple activities, OR a single activity with changing contentView ala ReactNative impl.
28
      * This is somewhat weird, and in the future either fully support multiple activities, OR a single activity with changing contentView ala ReactNative impl.
35
      */
29
      */
36
     private static Activity currentActivity;
30
     private static Activity currentActivity;
31
+    private NavigationReactInstance navigationReactInstance;
37
     private ModalController modalController;
32
     private ModalController modalController;
38
-
33
+    private Layout layout;
39
 
34
 
40
     @Override
35
     @Override
41
     protected void onCreate(Bundle savedInstanceState) {
36
     protected void onCreate(Bundle savedInstanceState) {
43
         modalController = new ModalController();
38
         modalController = new ModalController();
44
         navigationReactInstance = new NavigationReactInstance(this);
39
         navigationReactInstance = new NavigationReactInstance(this);
45
         navigationReactInstance.startReactContextOnceInBackgroundAndExecuteJS();
40
         navigationReactInstance.startReactContextOnceInBackgroundAndExecuteJS();
46
-        permissionToShowRedboxIfNeeded();
41
+        RedboxPermission.permissionToShowRedboxIfNeeded(this);
47
     }
42
     }
48
 
43
 
49
     @Override
44
     @Override
70
         }
65
         }
71
     }
66
     }
72
 
67
 
73
-    private void permissionToShowRedboxIfNeeded() {
74
-        if (BuildConfig.DEBUG && Build.VERSION.SDK_INT >= 23 && !Settings.canDrawOverlays(this)) {
75
-            Intent serviceIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
76
-            startActivity(serviceIntent);
77
-            String msg = "Overlay permissions needs to be granted in order for react native apps to run in dev mode";
78
-            Log.w(ReactConstants.TAG, msg);
79
-            Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
80
-        }
81
-    }
82
 
68
 
83
     private NavigationReactInstance getNavigationReactInstance() {
69
     private NavigationReactInstance getNavigationReactInstance() {
84
         return navigationReactInstance;
70
         return navigationReactInstance;
102
         super.onBackPressed();
88
         super.onBackPressed();
103
     }
89
     }
104
 
90
 
105
-
106
     @Override
91
     @Override
107
     public void onBackPressed() {
92
     public void onBackPressed() {
108
         if (modalController.onBackPressed()) {
93
         if (modalController.onBackPressed()) {

+ 5
- 0
android/app/src/main/java/com/reactnativenavigation/layouts/Layout.java View File

1
 package com.reactnativenavigation.layouts;
1
 package com.reactnativenavigation.layouts;
2
 
2
 
3
 public interface Layout {
3
 public interface Layout {
4
+    boolean onBackPressed();
5
+
6
+    void onDestroy();
7
+
8
+    void removeAllReactViews();
4
 }
9
 }

+ 24
- 0
android/app/src/main/java/com/reactnativenavigation/react/RedboxPermission.java View File

1
+package com.reactnativenavigation.react;
2
+
3
+import android.content.Context;
4
+import android.content.Intent;
5
+import android.os.Build;
6
+import android.provider.Settings;
7
+import android.util.Log;
8
+import android.widget.Toast;
9
+
10
+import com.facebook.react.common.ReactConstants;
11
+import com.reactnativenavigation.BuildConfig;
12
+
13
+public class RedboxPermission {
14
+
15
+    public static void permissionToShowRedboxIfNeeded(Context context) {
16
+        if (BuildConfig.DEBUG && Build.VERSION.SDK_INT >= 23 && !Settings.canDrawOverlays(context)) {
17
+            Intent serviceIntent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
18
+            context.startActivity(serviceIntent);
19
+            String msg = "Overlay permissions needs to be granted in order for react native apps to run in dev mode";
20
+            Log.w(ReactConstants.TAG, msg);
21
+            Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
22
+        }
23
+    }
24
+}