This is an automated email from the ASF dual-hosted git repository.

kyork pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-weex.git


The following commit(s) were added to refs/heads/master by this push:
     new c22ff1a  Add nav onSupportNavigateUp event (#2542)
c22ff1a is described below

commit c22ff1a67b2d6f3845f6d024817b295494a378d2
Author: darin <[email protected]>
AuthorDate: Thu Jun 13 11:48:45 2019 +0800

    Add nav onSupportNavigateUp event (#2542)
    
    add BackPressed listener
---
 .../main/java/com/taobao/weex/WXSDKInstance.java   | 73 ++++++++++++++++++++++
 1 file changed, 73 insertions(+)

diff --git a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java 
b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
index cfd2380..e7e54a7 100644
--- a/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
+++ b/android/sdk/src/main/java/com/taobao/weex/WXSDKInstance.java
@@ -191,6 +191,10 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
 
   private List<String> mLayerOverFlowListeners;
 
+  private List<ActionBarHandler> mWXActionbarHandlers;
+
+  private List<OnBackPressedHandler> mWXBackPressedHandlers;
+
   private WXSDKInstance mParentInstance;
 
   /**
@@ -274,6 +278,19 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
     this.mCustomFontNetworkHandler = customFontNetworkHandler;
   }
 
+
+  /**
+   *  ActionBar Handler
+   */
+
+  public interface ActionBarHandler {
+    boolean onSupportNavigateUp();
+  }
+
+  public interface OnBackPressedHandler {
+    boolean onBackPressed();
+  }
+
   /**
    * set make weexCore run in single process mode
    * @param flag true means weexCore run in single process mode or multi 
process mode
@@ -1359,7 +1376,26 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
     return false;
   }
 
+  public boolean onSupportNavigateUp() {
+    if (mWXActionbarHandlers != null) {
+      for (ActionBarHandler handler : mWXActionbarHandlers) {
+        if (handler.onSupportNavigateUp()) {
+          return true;
+        }
+      }
+    }
+    return false;
+  }
+
   public boolean onBackPressed() {
+    if(mWXBackPressedHandlers != null) {
+      for (OnBackPressedHandler handler : mWXBackPressedHandlers) {
+        if(handler.onBackPressed()) {
+          return true;
+        }
+      }
+    }
+
     WXComponent comp = getRootComponent();
     if(comp != null) {
       WXEvent events= comp.getEvents();
@@ -1712,6 +1748,8 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
       mFlatGUIContext = null;
       mInstanceOnFireEventInterceptorList = null;
       mWXScrollListeners = null;
+      mWXActionbarHandlers = null;
+      mWXBackPressedHandlers = null;
       mRenderContainer = null;
       mNestedInstanceInterceptor = null;
       mUserTrackAdapter = null;
@@ -1845,6 +1883,41 @@ public class WXSDKInstance implements 
IWXActivityStateListener,View.OnLayoutChan
     mWXScrollListeners.add(wxScrollListener);
   }
 
+  public synchronized void registerActionbarHandler(ActionBarHandler 
actionBarHandler) {
+    if(actionBarHandler == null) {
+      return;
+    }
+    if(mWXActionbarHandlers == null) {
+      mWXActionbarHandlers = new ArrayList<>();
+    }
+
+    mWXActionbarHandlers.add(actionBarHandler);
+  }
+
+  public synchronized void unRegisterActionbarHandler(ActionBarHandler 
actionBarHandler) {
+    if(mWXActionbarHandlers != null && actionBarHandler != null) {
+      mWXActionbarHandlers.remove(actionBarHandler);
+    }
+  }
+
+  public synchronized void registerBackPressedHandler(OnBackPressedHandler 
backPressedHandler) {
+    if(backPressedHandler == null) {
+      return;
+    }
+
+    if(mWXBackPressedHandlers == null) {
+      mWXBackPressedHandlers = new ArrayList<>();
+    }
+
+    mWXBackPressedHandlers.add(backPressedHandler);
+  }
+
+  public synchronized void unRegisterBackPressedHandler(OnBackPressedHandler 
backPressedHandler) {
+    if(mWXBackPressedHandlers != null && backPressedHandler != null) {
+      mWXBackPressedHandlers.remove(backPressedHandler);
+    }
+  }
+
   static int sScreenHeight = -1;
   public void setSize(int width, int height) {
     if (width > 0 && height > 0 & !isDestroy && mRendered && mRenderContainer 
!= null) {

Reply via email to