Browse Source

Remove previous ContextualMenu before adding new one

Guy Carmeli 8 years ago
parent
commit
20e30717d5

+ 1
- 1
android/app/src/main/java/com/reactnativenavigation/react/NavigationReactGateway.java View File

75
 
75
 
76
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
76
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
77
         Activity currentActivity = getReactInstanceManager().getCurrentReactContext().getCurrentActivity();
77
         Activity currentActivity = getReactInstanceManager().getCurrentReactContext().getCurrentActivity();
78
-        getReactInstanceManager().onActivityResult(currentActivity, requestCode, resultCode, data);
78
+        getReactInstanceManager().onActivityResult(requestCode, resultCode, data);
79
     }
79
     }
80
 
80
 
81
     public ReactNativeHost getReactNativeHost() {
81
     public ReactNativeHost getReactNativeHost() {

+ 13
- 1
android/app/src/main/java/com/reactnativenavigation/views/TitleBar.java View File

148
     }
148
     }
149
 
149
 
150
     public void show() {
150
     public void show() {
151
+        this.show(null);
152
+    }
153
+
154
+    public void show(final @Nullable Runnable onDisplayed) {
151
         setAlpha(0);
155
         setAlpha(0);
152
         animate()
156
         animate()
153
                 .alpha(1)
157
                 .alpha(1)
154
                 .setDuration(200)
158
                 .setDuration(200)
155
-                .setInterpolator(new AccelerateDecelerateInterpolator());
159
+                .setInterpolator(new AccelerateDecelerateInterpolator())
160
+                .setListener(new AnimatorListenerAdapter() {
161
+                    @Override
162
+                    public void onAnimationEnd(Animator animation) {
163
+                        if (onDisplayed != null) {
164
+                            onDisplayed.run();
165
+                        }
166
+                    }
167
+                });
156
     }
168
     }
157
 }
169
 }

+ 10
- 1
android/app/src/main/java/com/reactnativenavigation/views/TopBar.java View File

109
     }
109
     }
110
 
110
 
111
     public void showContextualMenu(final ContextualMenuParams params, StyleParams styleParams, Callback onButtonClicked) {
111
     public void showContextualMenu(final ContextualMenuParams params, StyleParams styleParams, Callback onButtonClicked) {
112
+        final ContextualMenu menuToRemove = contextualMenu != null ? contextualMenu : null;
112
         contextualMenu = new ContextualMenu(getContext(), params, styleParams, onButtonClicked);
113
         contextualMenu = new ContextualMenu(getContext(), params, styleParams, onButtonClicked);
113
         titleBarAndContextualMenuContainer.addView(contextualMenu, new ViewGroup.LayoutParams(MATCH_PARENT, WRAP_CONTENT));
114
         titleBarAndContextualMenuContainer.addView(contextualMenu, new ViewGroup.LayoutParams(MATCH_PARENT, WRAP_CONTENT));
114
         ViewUtils.runOnPreDraw(contextualMenu, new Runnable() {
115
         ViewUtils.runOnPreDraw(contextualMenu, new Runnable() {
115
             @Override
116
             @Override
116
             public void run() {
117
             public void run() {
117
                 titleBar.hide();
118
                 titleBar.hide();
118
-                contextualMenu.show();
119
+                contextualMenu.show(new Runnable() {
120
+                    @Override
121
+                    public void run() {
122
+                        if (menuToRemove != null) {
123
+                           titleBarAndContextualMenuContainer.removeView(menuToRemove);
124
+                        }
125
+                    }
126
+                });
119
             }
127
             }
120
         });
128
         });
121
     }
129
     }
122
 
130
 
123
     public void onContextualMenuHidden() {
131
     public void onContextualMenuHidden() {
132
+        contextualMenu = null;
124
         titleBar.show();
133
         titleBar.show();
125
     }
134
     }
126
 
135