[ 
https://issues.apache.org/jira/browse/FLEX-33592?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13687916#comment-13687916
 ] 

Philip Mair edited comment on FLEX-33592 at 6/19/13 12:20 PM:
--------------------------------------------------------------

Here is a sample, every click on item > 1 will force the error


<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"; 
                           xmlns:s="library://ns.adobe.com/flex/spark" 
                           xmlns:mx="library://ns.adobe.com/flex/mx"
                           minWidth="955" 
                           minHeight="600"
                           
                           >
        <fx:Script>
                <![CDATA[
                        import mx.collections.ArrayCollection;
                        import mx.controls.menuClasses.MenuBarItem;
                        
                        [Bindable]
                        private var dataProvider: ArrayCollection = 
buildDummyData( 5 );
                        
                        
                        protected function 
menubar1_clickHandler(event:MouseEvent):void
                        {
                                if(event.target is MenuBarItem)
                                {
                                        var item:MenuBarItem = event.target as 
MenuBarItem;
                                        
                                        trace("item clicked");
                                        
                                        dataProvider = buildDummyData(1);
                                }
                        }
                        
                        protected function buildDummyData( c: int 
):ArrayCollection
                        {
                                var ac: ArrayCollection = new ArrayCollection();
                                
                                for( var i: int = 0; i<c; i++ )
                                {
                                        ac.addItem( { 'label': 'ITEM_'+i } );
                                }
                                
                                return ac;
                        }
                                                
                ]]>
        </fx:Script>
        <fx:Declarations>
                
        </fx:Declarations>
        <mx:VBox>
                <mx:MenuBar dataProvider="{dataProvider}" 
click="menubar1_clickHandler(event)" />
                <s:Button label="reset" click="dataProvider = 
buildDummyData(5)" />
        </mx:VBox>
        
</s:Application>



TypeError: Error #1009: Cannot access a property or method of a null object 
reference.
        at 
mx.controls::MenuBar/getMenuAt()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/mx/src/mx/controls/MenuBar.as:1751]
        at 
mx.controls::MenuBar/mouseOutHandler()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/mx/src/mx/controls/MenuBar.as:2091]

                
      was (Author: philipmair):
    Here is a sample, every click on item > 1 will force the error

{code:xml}
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"; 
                           xmlns:s="library://ns.adobe.com/flex/spark" 
                           xmlns:mx="library://ns.adobe.com/flex/mx"
                           minWidth="955" 
                           minHeight="600"
                           
                           >
        <fx:Script>
                <![CDATA[
                        import mx.collections.ArrayCollection;
                        import mx.controls.menuClasses.MenuBarItem;
                        
                        [Bindable]
                        private var dataProvider: ArrayCollection = 
buildDummyData( 5 );
                        
                        
                        protected function 
menubar1_clickHandler(event:MouseEvent):void
                        {
                                if(event.target is MenuBarItem)
                                {
                                        var item:MenuBarItem = event.target as 
MenuBarItem;
                                        
                                        trace("item clicked");
                                        
                                        dataProvider = buildDummyData(1);
                                }
                        }
                        
                        protected function buildDummyData( c: int 
):ArrayCollection
                        {
                                var ac: ArrayCollection = new ArrayCollection();
                                
                                for( var i: int = 0; i<c; i++ )
                                {
                                        ac.addItem( { 'label': 'ITEM_'+i } );
                                }
                                
                                return ac;
                        }
                                                
                ]]>
        </fx:Script>
        <fx:Declarations>
                
        </fx:Declarations>
        <mx:VBox>
                <mx:MenuBar dataProvider="{dataProvider}" 
click="menubar1_clickHandler(event)" />
                <s:Button label="reset" click="dataProvider = 
buildDummyData(5)" />
        </mx:VBox>
        
</s:Application>
{code}

{{
TypeError: Error #1009: Cannot access a property or method of a null object 
reference.
        at 
mx.controls::MenuBar/getMenuAt()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/mx/src/mx/controls/MenuBar.as:1751]
        at 
mx.controls::MenuBar/mouseOutHandler()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/mx/src/mx/controls/MenuBar.as:2091]
}}
                  
> mx.controls.MenuBar#getMenuAt RangeError
> ----------------------------------------
>
>                 Key: FLEX-33592
>                 URL: https://issues.apache.org/jira/browse/FLEX-33592
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: mx: Menu Bar
>    Affects Versions: Apache Flex 4.9.0
>            Reporter: Philip Mair
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> When changing MenuBar dataProvider within click on MenuBar-Item causes a 
> RangeError in getMenuAt if the index was greater then new amount of MenuBar 
> Items.
> I solved this with following workaround:
>               public override function getMenuAt(index:int):Menu
>               {
>                       var menu:Menu = null;
>                       
>                       try
>                       {
>                               menu = super.getMenuAt(index);
>                       }
>                       catch(e: Error)
>                       {
>                               
>                       }
>                       if(menu == null) //return a fake menu to avoid 
> TypeError's
>                               return new Menu();
>                       else
>                               return menu;
>               }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to