             
             view.setCurrentState(view.getCurrentViewState(landscapeOrientation), false);
             addElement(view);
-        }
-        
-        // Put this before viewAdded() so another validation pass won't cause this to happen
-        currentViewChanged = false; 
-        viewAdded(transitionsEnabled ? pendingViewTransition : null);
+            
+            // Put this before viewAdded() so that another validation pass can run if needed during viewAdded
+            currentViewChanged = false; 
+            viewAdded(transitionsEnabled ? pendingViewTransition : null);
+        }
+        else
+        {
+            // Cancel operation if the factory class is null
+            currentViewChanged = false;
+            endViewChange();
+        }
+        
         pendingViewTransition = null;
     }
     

                
                currentViewData.persistedData = currentView.getPersistenceData();
                currentView.active = true;
                
            }
        }
        

            dispatchEvent(new FlexEvent(FlexEvent.VALUE_COMMIT));
        
        // Check if we need to push the root view
        if (currentSection && currentSection.length == 0 && currentSection.firstView != null)
            currentSection.push(currentSection.firstView, currentSection.firstViewData);
        
        pendingViewTransition = null;
