浏览代码

Remove previous ContextualMenu before adding new one

Guy Carmeli 8 年前
父节点
当前提交
20e30717d5

+ 1
- 1
android/app/src/main/java/com/reactnativenavigation/react/NavigationReactGateway.java 查看文件

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

+ 13
- 1
android/app/src/main/java/com/reactnativenavigation/views/TitleBar.java 查看文件

@@ -148,10 +148,22 @@ public class TitleBar extends Toolbar {
148 148
     }
149 149
 
150 150
     public void show() {
151
+        this.show(null);
152
+    }
153
+
154
+    public void show(final @Nullable Runnable onDisplayed) {
151 155
         setAlpha(0);
152 156
         animate()
153 157
                 .alpha(1)
154 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 查看文件

@@ -109,18 +109,27 @@ public class TopBar extends AppBarLayout {
109 109
     }
110 110
 
111 111
     public void showContextualMenu(final ContextualMenuParams params, StyleParams styleParams, Callback onButtonClicked) {
112
+        final ContextualMenu menuToRemove = contextualMenu != null ? contextualMenu : null;
112 113
         contextualMenu = new ContextualMenu(getContext(), params, styleParams, onButtonClicked);
113 114
         titleBarAndContextualMenuContainer.addView(contextualMenu, new ViewGroup.LayoutParams(MATCH_PARENT, WRAP_CONTENT));
114 115
         ViewUtils.runOnPreDraw(contextualMenu, new Runnable() {
115 116
             @Override
116 117
             public void run() {
117 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 131
     public void onContextualMenuHidden() {
132
+        contextualMenu = null;
124 133
         titleBar.show();
125 134
     }
126 135