diff --git a/renderer/native/android/src/main/java/com/tencent/mtt/hippy/uimanager/ControllerManager.java b/renderer/native/android/src/main/java/com/tencent/mtt/hippy/uimanager/ControllerManager.java index 9076d4e0c..6abbfe344 100644 --- a/renderer/native/android/src/main/java/com/tencent/mtt/hippy/uimanager/ControllerManager.java +++ b/renderer/native/android/src/main/java/com/tencent/mtt/hippy/uimanager/ControllerManager.java @@ -527,7 +527,7 @@ public class ControllerManager { @SuppressWarnings({"unchecked", "rawtypes"}) public void deleteChildRecursive(int rootId, ViewGroup parent, View child, boolean recyclable) { - if (parent == null || child == null) { + if (child == null) { return; } HippyViewController childController = null; @@ -555,15 +555,17 @@ public class ControllerManager { } } } - String parentTag = NativeViewTag.getClassName(parent); - if (parentTag != null) { - HippyViewController parentController = mControllerRegistry.getViewController( - parentTag); - if (parentController != null) { - parentController.deleteChild(parent, child); + if (parent != null) { + String parentTag = NativeViewTag.getClassName(parent); + if (parentTag != null) { + HippyViewController parentController = mControllerRegistry.getViewController( + parentTag); + if (parentController != null) { + parentController.deleteChild(parent, child); + } + } else { + parent.removeView(child); } - } else { - parent.removeView(child); } mControllerRegistry.removeView(rootId, child.getId()); if (checkRecyclable(childController, recyclable) && childTag != null) { diff --git a/renderer/native/android/src/main/java/com/tencent/renderer/node/ListItemRenderNode.java b/renderer/native/android/src/main/java/com/tencent/renderer/node/ListItemRenderNode.java index 3e5f09b20..71a7f4a8f 100644 --- a/renderer/native/android/src/main/java/com/tencent/renderer/node/ListItemRenderNode.java +++ b/renderer/native/android/src/main/java/com/tencent/renderer/node/ListItemRenderNode.java @@ -69,7 +69,7 @@ public class ListItemRenderNode extends RenderNode { if (parentNode != null) { mControllerManager.deleteChild(mRootId, parentNode.getId(), mId, true); } else { - removeChildrenView(this); + mControllerManager.deleteChildRecursive(mRootId, null, getHostView(), true); } }