Amy,

Thanks a lot. That did it.

Thanks,
Pradeep

On Tue, Apr 13, 2010 at 7:19 PM, Amy <amyblankens...@bellsouth.net> wrote:

>
>
>
>
> --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>,
> "prad_ch" <pradeep.chaudh...@...> wrote:
> >
> > I am getting a null object reference error while trying to instantiate an
> mxml component from actionscript. This same code works if compiled from
> Flash Builder Beta 2 version.
> > I am getting the error only if the code is compiled in Flash Builder 4
> (Flex 4 release version).
> >
> > The problem seems to be related to creation policy of the component but I
> have not been able to figure out how to resolve it. I have already specified
> creation policy as "all".
> >
> > Please help.
> > Pradeep
> >
> > Following is the prototype example of code.
> > ----------------------------------------------------------
> > CustomAccountGrid.mxml
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <mx:DataGrid xmlns:fx="http://ns.adobe.com/mxml/2009";
> > xmlns:s="library://ns.adobe.com/flex/spark"
> > xmlns:mx="library://ns.adobe.com/flex/mx"
> > width="100%" height="100%"
> > rowHeight="22" showHeaders="false" x="0" y="20" verticalGridLines="false"
> > fontSize="12" fontWeight="normal" borderVisible="false" >
> > <mx:columns>
> > <mx:DataGridColumn
> > dataField="name"
> > width="200"/>
> > <mx:DataGridColumn id="registerBalance"
> > textAlign="right"
> > width="100"/>
> > </mx:columns>
> > </mx:DataGrid>
> >
> > ----------------------------------------------------------
> > AccountView.mxml
> >
> > <?xml version="1.0" encoding="utf-8"?>
> > <s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009";
> > xmlns:s="library://ns.adobe.com/flex/spark"
> > xmlns:mx="library://ns.adobe.com/flex/mx"
> > xmlns:cust="test.custom.component.*"
> > width="100%" height="100%"
> > cornerRadius="4"
> > title="Spending Accounts"
> > fontSize="15" fontWeight="bold" creationPolicy="all">
> >
> > <s:Group height="24" left="10" right="10" top="10" fontSize="12"
> fontWeight="normal" >
> > <s:layout>
> > <s:HorizontalLayout gap="5" verticalAlign="middle"/>
> > </s:layout>
> > <mx:LinkButton label="Add" height="24" paddingBottom="2"/>
> > <mx:LinkButton label="Manage" height="24" paddingBottom="2"/>
> > <mx:LinkButton id="accountTransferLink" label="Account Transfer"
> height="24" paddingBottom="2"/>
> > <mx:LinkButton label="Refresh" height="24" paddingBottom="2"/>
> > </s:Group>
> >
> > <mx:Accordion width="100%" height="100%" top="44" fontSize="12"
> fontWeight="normal"
> > creationPolicy="all">
> > <s:NavigatorContent label="Money" width="100%"
> > bottom="0" contentBackgroundAlpha="0xFFFFFF" height="70%">
> > <cust:CustomAccountGrid id="moneyAccount" />
> > </s:NavigatorContent>
> > <s:NavigatorContent label="Credit" width="100%" height="70%">
> > <cust:CustomAccountGrid id="creditAccount" />
> > </s:NavigatorContent>
> > </mx:Accordion>
> >
> > </s:Panel>
> >
> > ----------------------------------------------------------
> > AccordionTest.mxml
> >
> > <?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"
>
> > xmlns:ui="test.custom.ui.*"
> > creationComplete="creationComplete(event)">
> >
> > <fx:Declarations>
> > <!-- Place non-visual elements (e.g., services, value objects) here -->
> > </fx:Declarations>
> >
> > <fx:Script>
> > <![CDATA[
> > import mx.events.FlexEvent;
> >
> > import test.custom.ui.AccountView;
> > private var _spendingAccount : AccountView;
> >
> > function creationComplete(event:FlexEvent):void{
> > _spendingAccount = new AccountView();
> > _spendingAccount.moneyAccount.dataProvider = {};
> > _spendingAccount.creditAccount.dataProvider = {};
> > }
> > ]]>
> > </fx:Script>
> > <!-- This works fine. creating through script gives error.
> > <ui:SpendingAccountView/>
> > -->
> > </s:Application>
> >
>
> Try this:
>
> function creationComplete(e:FlexEvent):void {
> _spendingAccount = new AccountView();
> _spendingAccount.addEventListener(FlexEvent.UPDATE_COMPLETE,
> initSpendingAccount);
> }
>
> function initSpendingAccount(e:FlexEvent):void {
> _spendingAccount.moneyAccount.dataProvider = new ArrayCollection();
> _spendingAccount.creditAccount.dataProvider = new ArrayCollection();
> }
>
> Or, you could just properly encapsulate AccountView and let it set
> properties on its own children in commitProperties().
>
> HTH;
>
> Amy
>
>  
>

Reply via email to