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) {