Repository: incubator-weex
Updated Branches:
  refs/heads/0.16-dev 96c52aec5 -> 20b0a434a


* [android] Fix the problem of NPE and AndroidViewWidget's layout


Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/23ca407a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/23ca407a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/23ca407a

Branch: refs/heads/0.16-dev
Commit: 23ca407a5e3acd010240e24c0911bfd732041ea8
Parents: 878c3a9
Author: YorkShen <shenyua...@gmail.com>
Authored: Mon Aug 28 15:11:17 2017 +0800
Committer: YorkShen <shenyua...@gmail.com>
Committed: Wed Sep 13 16:54:07 2017 +0800

----------------------------------------------------------------------
 .../java/com/taobao/weex/ui/component/WXComponent.java  | 12 ++++++++++--
 .../main/java/com/taobao/weex/ui/component/WXDiv.java   |  4 +++-
 .../java/com/taobao/weex/ui/component/list/WXCell.java  |  4 +++-
 3 files changed, 16 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/23ca407a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
index d183544..6f20d1d 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXComponent.java
@@ -494,11 +494,19 @@ public abstract class  WXComponent<T extends View> 
implements IWXObject, IWXActi
 
   private void setWidgetParams(Widget widget, FlatGUIIContext UIImp, Point 
rawoffset,
       int width, int height, int left, int right, int top, int bottom) {
-    Point childOffset = new Point(rawoffset.x, rawoffset.y);
+    Point childOffset = new Point();
     if (mParent != null) {
       if (mParent instanceof FlatComponent &&
           UIImp.getFlatComponentAncestor(mParent) != null &&
           UIImp.getAndroidViewWidget(mParent) == null) {
+        childOffset.set(rawoffset.x, rawoffset.y);
+      } else {
+        childOffset.set(left, top);
+      }
+
+      if (mParent instanceof FlatComponent &&
+          UIImp.getFlatComponentAncestor(mParent) != null &&
+          UIImp.getAndroidViewWidget(mParent) == null) {
         Point parentLayoutOffset = ((FlatComponent) 
mParent).getOrCreateFlatWidget().getLocInFlatContainer();
         childOffset.offset(parentLayoutOffset.x, parentLayoutOffset.y);
       }
@@ -515,7 +523,7 @@ public abstract class  WXComponent<T extends View> 
implements IWXObject, IWXActi
     }
     widget.setLayout(width, height, left, right, top, bottom, childOffset);
 
-    if (widget instanceof AndroidViewWidget) {
+    if (widget instanceof AndroidViewWidget && ((AndroidViewWidget) 
widget).getView()!=null) {
       //TODO generic method if ever possible
       setHostLayoutParams((T) ((AndroidViewWidget) widget).getView(),
           width, height, childOffset.x, right, childOffset.y, bottom);

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/23ca407a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java
----------------------------------------------------------------------
diff --git a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java
index 18c734e..f533989 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/WXDiv.java
@@ -90,7 +90,9 @@ public class WXDiv extends WidgetContainer<WXFrameLayout> 
implements FlatCompone
   @Override
   protected void mountFlatGUI() {
     if (promoteToView(true)) {
-      getHostView().mountFlatGUI(widgets);
+      if(getHostView()!=null) {
+        getHostView().mountFlatGUI(widgets);
+      }
     } else {
       mWidgetGroup.replaceAll(widgets);
     }

http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/23ca407a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java
----------------------------------------------------------------------
diff --git 
a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java 
b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java
index cac3048..7981701 100644
--- a/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java
+++ b/android/sdk/src/main/java/com/taobao/weex/ui/component/list/WXCell.java
@@ -144,7 +144,9 @@ public class WXCell extends WidgetContainer<WXFrameLayout> {
 
     @Override
     protected void mountFlatGUI() {
+      if(getHostView()!=null) {
         getHostView().mountFlatGUI(widgets);
+      }
     }
 
     @Override
@@ -155,6 +157,6 @@ public class WXCell extends WidgetContainer<WXFrameLayout> {
     @Override
     public boolean intendToBeFlatContainer() {
         //TODO Is it possible to remove the cell class judge
-        return getInstance().getFlatUIContext().isFlatUIEnabled() && 
WXCell.class.equals(getClass());
+        return getInstance().getFlatUIContext().isFlatUIEnabled() && 
WXCell.class.equals(getClass()) && !isSticky();
     }
 }

Reply via email to