浏览代码

Update fab when modal is dismissed

Guy Carmeli 8 年前
父节点
当前提交
01fbdd66f5

+ 3
- 0
android/app/src/main/java/com/reactnativenavigation/controllers/ModalController.java 查看文件

2
 
2
 
3
 import android.support.v7.app.AppCompatActivity;
3
 import android.support.v7.app.AppCompatActivity;
4
 
4
 
5
+import com.reactnativenavigation.events.EventBus;
6
+import com.reactnativenavigation.events.ModalDismissedEvent;
5
 import com.reactnativenavigation.layouts.ScreenStackContainer;
7
 import com.reactnativenavigation.layouts.ScreenStackContainer;
6
 import com.reactnativenavigation.params.ScreenParams;
8
 import com.reactnativenavigation.params.ScreenParams;
7
 import com.reactnativenavigation.params.TitleBarButtonParams;
9
 import com.reactnativenavigation.params.TitleBarButtonParams;
72
     @Override
74
     @Override
73
     public void onModalDismissed(Modal modal) {
75
     public void onModalDismissed(Modal modal) {
74
         stack.remove(modal);
76
         stack.remove(modal);
77
+        EventBus.instance.post(new ModalDismissedEvent());
75
     }
78
     }
76
 
79
 
77
     public void setTopBarVisible(String screenInstanceId, boolean hidden, boolean animated) {
80
     public void setTopBarVisible(String screenInstanceId, boolean hidden, boolean animated) {

+ 14
- 1
android/app/src/main/java/com/reactnativenavigation/controllers/NavigationActivity.java 查看文件

7
 
7
 
8
 import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
8
 import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
9
 import com.reactnativenavigation.NavigationApplication;
9
 import com.reactnativenavigation.NavigationApplication;
10
+import com.reactnativenavigation.events.Event;
11
+import com.reactnativenavigation.events.EventBus;
12
+import com.reactnativenavigation.events.ModalDismissedEvent;
13
+import com.reactnativenavigation.events.Subscriber;
10
 import com.reactnativenavigation.layouts.BottomTabsLayout;
14
 import com.reactnativenavigation.layouts.BottomTabsLayout;
11
 import com.reactnativenavigation.layouts.Layout;
15
 import com.reactnativenavigation.layouts.Layout;
12
 import com.reactnativenavigation.layouts.LayoutFactory;
16
 import com.reactnativenavigation.layouts.LayoutFactory;
21
 
25
 
22
 import java.util.List;
26
 import java.util.List;
23
 
27
 
24
-public class NavigationActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler, ReactGateway.OnJsDevReloadListener {
28
+public class NavigationActivity extends AppCompatActivity implements DefaultHardwareBackBtnHandler, ReactGateway.OnJsDevReloadListener, Subscriber {
25
 
29
 
26
     /**
30
     /**
27
      * Although we start multiple activities, we make sure to pass Intent.CLEAR_TASK | Intent.NEW_TASK
31
      * Although we start multiple activities, we make sure to pass Intent.CLEAR_TASK | Intent.NEW_TASK
79
 
83
 
80
         currentActivity = this;
84
         currentActivity = this;
81
         NavigationApplication.instance.getReactGateway().onResumeActivity(this, this, this);
85
         NavigationApplication.instance.getReactGateway().onResumeActivity(this, this, this);
86
+        EventBus.instance.register(this);
82
     }
87
     }
83
 
88
 
84
     @Override
89
     @Override
86
         super.onPause();
91
         super.onPause();
87
         currentActivity = null;
92
         currentActivity = null;
88
         NavigationApplication.instance.getReactGateway().onPauseActivity();
93
         NavigationApplication.instance.getReactGateway().onPauseActivity();
94
+        EventBus.instance.unregister(this);
89
     }
95
     }
90
 
96
 
91
     @Override
97
     @Override
249
     public void showSnackbar(SnackbarParams params) {
255
     public void showSnackbar(SnackbarParams params) {
250
         layout.showSnackbar(params);
256
         layout.showSnackbar(params);
251
     }
257
     }
258
+
259
+    @Override
260
+    public void onEvent(Event event) {
261
+        if (event.getType() == ModalDismissedEvent.TYPE) {
262
+            layout.onModalDismissed();
263
+        }
264
+    }
252
 }
265
 }

+ 10
- 0
android/app/src/main/java/com/reactnativenavigation/events/ModalDismissedEvent.java 查看文件

1
+package com.reactnativenavigation.events;
2
+
3
+public class ModalDismissedEvent implements Event {
4
+    public static final String TYPE = "ModalDismissedEvent";
5
+
6
+    @Override
7
+    public String getType() {
8
+        return TYPE;
9
+    }
10
+}

+ 5
- 0
android/app/src/main/java/com/reactnativenavigation/layouts/BottomTabsLayout.java 查看文件

193
         snackbarAndFabContainer.showSnackbar(eventId, params);
193
         snackbarAndFabContainer.showSnackbar(eventId, params);
194
     }
194
     }
195
 
195
 
196
+    @Override
197
+    public void onModalDismissed() {
198
+        EventBus.instance.post(new ScreenChangedEvent(getCurrentScreenStack().peek().getScreenParams()));
199
+    }
200
+
196
     public void selectBottomTabByTabIndex(Integer index) {
201
     public void selectBottomTabByTabIndex(Integer index) {
197
         bottomTabs.setCurrentItem(index);
202
         bottomTabs.setCurrentItem(index);
198
     }
203
     }

+ 2
- 0
android/app/src/main/java/com/reactnativenavigation/layouts/Layout.java 查看文件

28
     void setSideMenuVisible(boolean animated, boolean visible);
28
     void setSideMenuVisible(boolean animated, boolean visible);
29
 
29
 
30
     void showSnackbar(SnackbarParams params);
30
     void showSnackbar(SnackbarParams params);
31
+
32
+    void onModalDismissed();
31
 }
33
 }

+ 5
- 0
android/app/src/main/java/com/reactnativenavigation/layouts/SingleScreenLayout.java 查看文件

193
         snackbarAndFabContainer.showSnackbar(navigatorEventId, params);
193
         snackbarAndFabContainer.showSnackbar(navigatorEventId, params);
194
     }
194
     }
195
 
195
 
196
+    @Override
197
+    public void onModalDismissed() {
198
+        EventBus.instance.post(new ScreenChangedEvent(stack.peek().getScreenParams()));
199
+    }
200
+
196
     @Override
201
     @Override
197
     public boolean onTitleBarBackButtonClick() {
202
     public boolean onTitleBarBackButtonClick() {
198
         if (leftButtonOnClickListener != null) {
203
         if (leftButtonOnClickListener != null) {