You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by "Philip Mair (JIRA)" <ji...@apache.org> on 2013/06/19 14:22:21 UTC

[jira] [Comment Edited] (FLEX-33592) mx.controls.MenuBar#getMenuAt RangeError

    [ 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