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>


Reply via email to