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 5ed100ffe..360e36e57 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java @@ -132,7 +132,7 @@ public class FlatUIImplementation extends UIImplementation { } if (node.mountsToView()) { - mStateBuilder.ensureBackingViewIsCreated(node, styles); + mStateBuilder.enqueueCreateOrUpdateView(node, styles); } } else { super.handleCreateView(cssNode, rootViewTag, styles); @@ -150,7 +150,7 @@ public class FlatUIImplementation extends UIImplementation { node.handleUpdateProperties(styles); if (node.mountsToView()) { - mStateBuilder.ensureBackingViewIsCreated(node, styles); + mStateBuilder.enqueueCreateOrUpdateView(node, styles); } } else { super.handleUpdateView(cssNode, className, styles); @@ -426,7 +426,7 @@ public class FlatUIImplementation extends UIImplementation { FlatShadowNode nonVirtualNode = (FlatShadowNode) node; nonVirtualNode.forceMountToView(); - mStateBuilder.ensureBackingViewIsCreated(nonVirtualNode, null); + mStateBuilder.ensureBackingViewIsCreated(nonVirtualNode); FlatUIViewOperationQueue operationsQueue = mStateBuilder.getOperationsQueue(); operationsQueue.enqueueSetJSResponder( diff --git a/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java b/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java index 1029e19d3..1e14a747a 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java @@ -121,7 +121,7 @@ import com.facebook.react.uimanager.events.EventDispatcher; mAttachDetachListeners.add(listener); } - /* package */ void ensureBackingViewIsCreated( + /* package */ void enqueueCreateOrUpdateView( FlatShadowNode node, @Nullable ReactStylesDiffMap styles) { if (node.isBackingViewCreated()) { @@ -138,6 +138,17 @@ import com.facebook.react.uimanager.events.EventDispatcher; node.signalBackingViewIsCreated(); } + /* package */ void ensureBackingViewIsCreated(FlatShadowNode node) { + if (node.isBackingViewCreated()) { + return; + } + + int tag = node.getReactTag(); + mOperationsQueue.enqueueCreateView(node.getThemedContext(), tag, node.getViewClass(), null); + + node.signalBackingViewIsCreated(); + } + /* package */ void dropView(FlatShadowNode node) { mViewsToDrop.add(node); } @@ -445,7 +456,7 @@ import com.facebook.react.uimanager.events.EventDispatcher; float bottom = top + height; if (node.mountsToView()) { - ensureBackingViewIsCreated(node, null); + ensureBackingViewIsCreated(node); addNativeChild(node); if (!parentIsAndroidView) {