Pessoal, Situação: Estou desenvolvendo um projeto, cuja tela principal deverá conter um ModuleLoader que carregará vários módulos ao longo da existência da aplicação, existindo a possibilidade de um módulo ser recarregado também várias vezes, caso o usuário queira, por exemplo, entrar no módulo de fornecedores, sair, ir para o módulo de clientes, sair e voltar para o módulo de fornecedores.
Problema: Os módulos funcionam perfeitamente na primeira vez em que são carregados, porém, na segunda vez que são carregados, alguns componentes, como o DataGrid, por exemplo, ao disparar o evento ListEvent, não passam a linha atual para a propriedade itemRenderer.data do evento. Já coloquei e tirei o SDK da RSL, já troquei a versão do SDK, troquei o ModuleLoader da tela principal por um ViewStack, mas nada de funcionar corretamente. Atualmente estou utilizando o SDK 3.4 (merged into code). Abaixo um trecho do meu componente NavigationContext, que dentre outras coisas, gerencia o carregamento dos módulos: [code] package br.com.hordi.rechapps.view.utils{ import br.com.hordi.rechapps.view.forms.LoadingProgressForm; import mx.core.Application; import mx.events.ModuleEvent; import mx.modules.ModuleLoader; import mx.resources.ResourceManager; import flash.events.EventDispatcher; [Resource("exceptions")] public class NavigationContext extends EventDispatcher{ private static var instance:NavigationContext; [Bindable] private var moduleLoader:ModuleLoader; [Bindable] private var loadingProgressForm:LoadingProgressForm; public function NavigationContext( enforcer:SingletonEnforcer ){ if( !enforcer ){ throw new Error( ResourceManager.getInstance().getString( "exceptions", "SingletonInstanceException" ) ); } else { loadingProgressForm = LoadingProgressForm.getInstance(); } } public static function getInstance():NavigationContext{ if( instance == null ){ instance = new NavigationContext( new SingletonEnforcer() ); } return instance; } public function browse( url:String ):void{ moduleLoader = new ModuleLoader(); moduleLoader.addEventListener(ModuleEvent.READY, function(event:ModuleEvent):void{ loadingProgressForm.hide(); for( var idx:Number = 0; idx < Application.application.modulesContainer.getChildren().length; idx++ ) { var unusedModule:ModuleLoader = Application.application.modulesContainer.getChildAt( idx ) as ModuleLoader; Application.application.modulesContainer.removeChild( unusedModule ); unusedModule.unloadModule(); } Application.application.modulesContainer.addChild( moduleLoader ); Application.application.modulesContainer.selectedIndex = (Application.application.modulesContainer.getChildren().length-1); }); moduleLoader.addEventListener(ModuleEvent.PROGRESS, function(event:ModuleEvent):void{ loadingProgressForm.setProgress( Math.ceil((event.bytesLoaded / event.bytesTotal)*100), 100 ); loadingProgressForm.label = "Carregando módulo - " + Math.ceil((event.bytesLoaded / event.bytesTotal)*100) + "%"; loadingProgressForm.title = "Carregando..."; }); moduleLoader.loadModule( url ); loadingProgressForm.show(); } } } class SingletonEnforcer{} [/code] OBS: Deixei os listeners do moduleLoader inline mesmo, porque ainda estou tentando outras soluções para o problema. Se alguém puder ajudar, agradeço bastante! Um abraço! Diego Hordi -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev