diff --git a/android/src/main/java/com/horcrux/svg/SvgView.java b/android/src/main/java/com/horcrux/svg/SvgView.java index 0d2e4209..a9e57cab 100644 --- a/android/src/main/java/com/horcrux/svg/SvgView.java +++ b/android/src/main/java/com/horcrux/svg/SvgView.java @@ -78,12 +78,6 @@ public class SvgView extends ViewGroup { SvgViewManager.setSvgView(this); } - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - SvgViewManager.dropSvgView(this); - } - @Override public void invalidate() { super.invalidate(); @@ -97,7 +91,11 @@ public class SvgView extends ViewGroup { protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (mBitmap == null) { - mBitmap = getShadowNode().drawOutput(); + SvgViewShadowNode node = getShadowNode(); + if (node == null) { + return; + } + mBitmap = node.drawOutput(); } canvas.drawBitmap(mBitmap, 0, 0, null); } diff --git a/android/src/main/java/com/horcrux/svg/SvgViewManager.java b/android/src/main/java/com/horcrux/svg/SvgViewManager.java index cd60121d..9326d65b 100644 --- a/android/src/main/java/com/horcrux/svg/SvgViewManager.java +++ b/android/src/main/java/com/horcrux/svg/SvgViewManager.java @@ -50,12 +50,6 @@ class SvgViewManager extends ViewGroupManager { mTagToSvgView.put(svg.getId(), svg); } - static void dropSvgView(SvgView view) { - int tag = view.getId(); - mTagToShadowNode.remove(tag); - mTagToSvgView.remove(tag); - } - @SuppressWarnings("unused") static @Nullable SvgView getSvgViewByTag(int tag) { return mTagToSvgView.get(tag); @@ -92,4 +86,12 @@ class SvgViewManager extends ViewGroupManager { root.invalidate(); } + @Override + public void onDropViewInstance(SvgView view) { + super.onDropViewInstance(view); + + int tag = view.getId(); + mTagToShadowNode.remove(tag); + mTagToSvgView.remove(tag); + } }