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