diff --git a/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java b/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java index 9e05a3f6256..1ef816ec13e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java @@ -169,6 +169,7 @@ public class FlatUIImplementation extends UIImplementation { public void measure(int reactTag, Callback callback) { FlatShadowNode node = (FlatShadowNode) resolveShadowNode(reactTag); if (node.mountsToView()) { + mStateBuilder.ensureBackingViewIsCreated(node); super.measure(reactTag, callback); return; } @@ -182,6 +183,7 @@ public class FlatUIImplementation extends UIImplementation { while (true) { node = Assertions.assumeNotNull((FlatShadowNode) node.getParent()); if (node.mountsToView()) { + mStateBuilder.ensureBackingViewIsCreated(node); break; } @@ -202,6 +204,48 @@ public class FlatUIImplementation extends UIImplementation { callback); } + private void ensureMountsToViewAndBackingViewIsCreated(int reactTag) { + FlatShadowNode node = (FlatShadowNode) resolveShadowNode(reactTag); + node.forceMountToView(); + mStateBuilder.ensureBackingViewIsCreated(node); + } + + @Override + public void findSubviewIn(int reactTag, float targetX, float targetY, Callback callback) { + ensureMountsToViewAndBackingViewIsCreated(reactTag); + super.findSubviewIn(reactTag, targetX, targetY, callback); + } + + @Override + public void measureInWindow(int reactTag, Callback callback) { + ensureMountsToViewAndBackingViewIsCreated(reactTag); + super.measureInWindow(reactTag, callback); + } + + @Override + public void addAnimation(int reactTag, int animationID, Callback onSuccess) { + ensureMountsToViewAndBackingViewIsCreated(reactTag); + super.addAnimation(reactTag, animationID, onSuccess); + } + + @Override + public void dispatchViewManagerCommand(int reactTag, int commandId, ReadableArray commandArgs) { + ensureMountsToViewAndBackingViewIsCreated(reactTag); + super.dispatchViewManagerCommand(reactTag, commandId, commandArgs); + } + + @Override + public void showPopupMenu(int reactTag, ReadableArray items, Callback error, Callback success) { + ensureMountsToViewAndBackingViewIsCreated(reactTag); + super.showPopupMenu(reactTag, items, error, success); + } + + @Override + public void sendAccessibilityEvent(int reactTag, int eventType) { + ensureMountsToViewAndBackingViewIsCreated(reactTag); + super.sendAccessibilityEvent(reactTag, eventType); + } + /** * Removes all children defined by moveFrom and removeFrom from a given parent, * preparing elements in moveFrom to be re-added at proper index.