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 9076d4e0cad..6abbfe344dd 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 @@ private boolean checkRecyclable(@Nullable HippyViewController controller, boolea @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 void deleteChildRecursive(int rootId, ViewGroup parent, View child, boole } } } - 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 3e5f09b208f..71a7f4a8f71 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 @@ private void removeView() { if (parentNode != null) { mControllerManager.deleteChild(mRootId, parentNode.getId(), mId, true); } else { - removeChildrenView(this); + mControllerManager.deleteChildRecursive(mRootId, null, getHostView(), true); } }