      *  instance of the new view is added to the display list.  It initializes
      *  the underlying ViewDescriptor object and prepares the transition.
      * 
-     *  @langversion 3.0
-     *  @playerversion AIR 2.5
-     *  @productversion Flex 4.5
-     */
-    private function prepareViewTransition():void
-    {
+     *  Called after the UPDATE_COMPLETE event is received on the navigator
+     *  after the pendingView is added to the display list.  
+     *  See commitNavigatorAction.
+     * 
+     *  @langversion 3.0
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    private function prepareViewTransition(event:Event):void
+    {
+        removeEventListener(FlexEvent.UPDATE_COMPLETE, prepareViewTransition);
+        
         var currentView:View;
         var pendingView:View;
         

            
            activeTransition = transitionsEnabled ? pendingViewTransition : null;
            
            // Force a validation of the navigator so that all validation events are
            // dispatched to the developer before preparing the view transition.
            validateNow();
            
            // Prepare the view transition
            prepareViewTransition();
        }
        
        pendingViewTransition = null;

            currentView = currentViewDescriptor.instance;
            currentView.setActive(false);
            
            // In most cases this is a No-Op because this method is called in response
            // to UPDATE_COMPLETE on the navigator and there should be no objects
            // in the LayoutManager's queue.  It's only here to ensure that the
            // current view is up to date incase anything changed.
            currentView.validateNow();
        }
        
