Flex - Alterar o currentState

0 respostas
joede.fadel

Estou com o seguinte problema, tenho dois arquivos MXML o main que é o principal e o outro de cadastro, no main eu faço a inclusão do cadastro e altero o currentState, só que tenho a necessidade de criar um botão “Voltar” que exibe o main como estava anteriormente, como que eu poderia fazer isso?
main

<?xml version="1.0" encoding="utf-8"?>
<titlewindow:TitleWindowBase 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:titlewindow="titlewindow.*" 
							 width="874" height="434" title="lab" 
							 height.menu="434" width.funcionalidade="870">
	<titlewindow:layout>
		<s:HorizontalLayout/>
	</titlewindow:layout>
	
	<titlewindow:states>
		<s:State name="menu"/>		
		<s:State name="funcionalidade"/>
	</titlewindow:states>

	<fx:Script>
		<![CDATA[
			import protocolo.CadProtocolo;
			import protocolo.ConsProtocolo;
			
			
			public function cadastrarProtocolo():void {
				this.currentState = "funcionalidade";
				var windowIn:CadProtocolo = new CadProtocolo();
				formularios.removeAllElements();
				formularios.addChild(windowIn);
				
				
			}
			
			public function selecionarProtocolo():void{
				this.currentState = "funcionalidade";
				var windowIn:ConsProtocolo = new ConsProtocolo();
				formularios.removeAllElements();
				formularios.addChild(windowIn);				
			}
			
			public function menu():void {								
				formularios.removeAllChildren();
				this.currentState = "menu";
				
			}
		]]>
	</fx:Script>
	
	
	<mx:Accordion includeIn="menu" width.menu="170" height.menu="303">
		<mx:VBox label="Protocólo">
			<mx:LinkButton  label="Cadastrar" click="cadastrarProtocolo()" />
			<mx:LinkButton  label="Selecionar" click="selecionarProtocolo()" />			
		</mx:VBox>
		
	</mx:Accordion>	
	
	 
   <mx:HBox id="formularios" includeIn="funcionalidade">
	   
   </mx:HBox>
	<mx:Canvas id="form" includeIn="menu,funcionalidade">
		<s:Button label="Voltar"  click="menu()" /> <!--coloquei aqui apenas para teste, desta forma funciona-->
	</mx:Canvas>
	
	
</titlewindow:TitleWindowBase>

Protocolo

<?xml version="1.0" encoding="utf-8"?>
<s:Group 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="700" height="250">
	
	
		<fx:Script>
		<![CDATA[
			
			private function menu():void {
				var windowIn:main = new main();
				windowIn.formularios.removeAllElements();
				windowIn.currentState = "menu";				
			}
		]]>
	</fx:Script>
	
	<mx:Form height="250" width="690">
		<mx:HBox>
			<mx:Label text="Cadastro de Protocólos" textAlign="center" width="650"  fontSize="16" fontWeight="bold" fontStyle="normal"/>
		</mx:HBox>
		<mx:HBox>
			<mx:Label text="Razão Social:"  width="115"/>
			<s:ComboBox id="razaoSocial" width="530">
				<s:ArrayCollection>
					<fx:Object label="AAA" data="2"/>
					<fx:Object label="BBB" data="1"/>
					<fx:Object label="NNNN" data="3"/>
					<fx:Object label="ZZZZ" data="4"/>
				</s:ArrayCollection>
			</s:ComboBox>
		</mx:HBox>		
		<mx:HBox>
			<mx:Label text="Nome Contato:"  width="115"/>
			<s:TextInput id="nomeContato" width="530"/>
		</mx:HBox>
		<mx:HBox>
			<mx:HBox>
				<mx:HBox>
					<mx:Label text="Telefone:" width="115" />
					<s:TextInput id="telefoneContato"  width="120"/>
				</mx:HBox>
			   <mx:Label text="E-mail:"  />
			   <s:TextInput id="emailContato"  width="350"/>
			</mx:HBox>			
		</mx:HBox>
		<mx:HBox>
			<mx:Label text="Tipo:"  width="115"/>
			<s:ComboBox id="tipo" width="120">
				<s:ArrayCollection>
					<fx:Object label="Balcão" data="1"/>
					<fx:Object label="Contrato" data="2"/>
				</s:ArrayCollection>
			</s:ComboBox>
		</mx:HBox>
		<mx:HBox width="650" horizontalAlign="right">			
			   <s:Button label="Salvar" />
			   <s:Button label="Limpar" />
			   <s:Button label="Voltar"  click="menu()" /><!--ao clicar no botão da um erro -->
		</mx:HBox>
	</mx:Form>
</s:Group>
TypeError: Error #1009: Cannot access a property or method of a null object reference.
	at protocolo::CadProtocolo/menu()[D:\Eclipse Galileo SR2\workspace\Laboratorio\flex_src\protocolo\Cadastro.mxml:12]
	at protocolo::CadProtocolo/___CadProtocolo_Button3_click()[D:\Eclipse Galileo SR2\workspace\Laboratorio\flex_src\protocolo\Cadastro.mxml:60]
Criado 27 de abril de 2011
Respostas 0
Participantes 1