Domanda

Nella mia domanda ho un ViewStack che sto cambiando tramite ActionScript mediante l'attributo selectedChild. Il problema che ho incontrato è che voglio chiamare un metodo nel componente che è ora il bambino selezionato nel ViewStack, subito dopo assegno che sia il bambino che mi dà un "Impossibile accedere a una proprietà o un metodo di un oggetto null riferimento." C'è qualche modo che io possa fare questo lavoro senza cambiare la creationPolicy a tutti?

Actionscript:

    public function displayTaskDashboard(evt:Event):void
    {
    pm_viewstack.selectedChild = nc_taskDashboard;
taskDashboard.populateTasks(Globals.currentProject.Project_ID);
}

MXML:

  <mx:ViewStack id="pm_viewstack" creationPolicy="auto">
    <s:NavigatorContent id="nc_projectDashboard">
        <components:ProjectDashboard/>
    </s:NavigatorContent>
    <s:NavigatorContent id="nc_taskDashboard">
        <components:TaskDashboard id="taskDashboard" />
    </s:NavigatorContent>
    <s:NavigatorContent id="nc_taskWizard">
        <components:TaskWizard id="taskWizard" />
    </s:NavigatorContent>
</mx:ViewStack>
È stato utile?

Soluzione

Prova a chiamare .validateNow () o .validateDisplayList () metodo su propria istanza ViewStack (pm_viewstack.validateNow () o pm_viewstack.validateDisplayList ()) prima accesing il suo bambino. Ma io non sono sicuro se sarebbe d'aiuto con la politica di creazione del bambino.

Altri suggerimenti

Il problema è ViewStack non crea i bambini fino a che non vengono assegnati a selectedChild prima. Ciò consente di risparmiare memoria in quanto l'utente potrebbe non accedere ogni possibile pagina durante il runtime. Questo è il comportamento predefinito. La maggior parte delle persone semplicemente cambiare il creationPolicy di pre-istanziare tutti i bambini annullando così il risparmio di memoria. L'alternativa è quella di registrare un listener di eventi creationComplete su ogni bambino. In questo modo è possibile riprendere l'algoritmo volta che il bambino è stato creato. Che mantiene la risparmio di memoria che si ottiene, e ti permette di riprendere dopo che il bambino è stato creato. Le cose da tenere a mente è che non è eseguito ogni volta che viene assegnato selectedChild troppo. Ma, si può facilmente aggirare che, con qualche semplice se i controlli.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top