Navegação de telas em Flex 4

12 respostas
brunorota

Olá galera

Minha dúvida é a seguinte

Eu tenho várias telas em flex, por exemplo: tenho uma tela de cadastro que são feitas em 4 passos.

então tenho 4 telas, cadastro1.mxml, cadastro2.mxml…

Na tela cadastro1.mxml eu tenho um botão que precisa chamar o cadastro2.mxml passando alguns dados da tela cadastro1.mxml

Como eu faço essa navegação entre telas passando esses dados?

Exemplo: o primeiro passo eh digitar o nome ae eu clico no botao, na tela cadastro2.mxml tem que aparecer o nome digitado na tela cadastro1.mxml e assim por diante

Atenciosamente

12 Respostas

F

Bruno,
No Flex existe os containers e um tipo é os navegadores, q são: ViewStack, TabNavigator e Accordion, dá uma olhada acredito q um deles irá te auxiliar.

[]s

brunorota

Valew Fabio

Eu até conhecia esses continer usei em um caso, vou analisar que isso pode me ajudar nessa situação

Mais tem algumas situações que não tem como

Preciso da navegação, tipo clicar em um botão e carregar outra tela

Vc sabe como fazer isso?

F

Bruno,
Vc pode usar estes componentes e vc tem como navegar de forma programática usando os atributos selectedIndex e selectedChild.

[]s

brunorota

Tipo, vc ta falando pra eu fazer uma tela principal e a partir dessa tela criar apenas um container ViewStack por exemplo com varias telas nele?

Eu to pensando no seguinte ter várias telas, varios mxml e quando eu clicar em um botão no mxml principal tipo, abrir cadastro de pessoa, carregar a página cadastro de pessoa

Entendeu?

Não tem como fazer isso?

F

Bruno,
Entendi, é q normalmente qd é um cadastro com vários passos se usa navegadores.
No teu caso vc pode abrir várias janelas usano PopUpManager.

brunorota

Eh na parte de cadastro eu vou fazer isso mesmo que você falou hehehe

Tem como eu carregar otra página na mesma página, sem ser em uma janela diferente?

F

Bruno,
Não entendi, janela do navegador?

[]s

renzonuccitelli

Quando são vários passos no estilo Wizard, eu uso o ViewStack, como no segundo vídeo do Revelação Virtual (RV). Quando é simplesmente uma tela que deve aparecer e sumir, eu criei um esquema de despachar eventos que são capturados pelo meu application, que então adiciona ou remove a tela que passo como parâmetro no evento. Você pode ver isso na minha tela de login tb no RV.

Precisando de um curso em flex, de uma olhada na Nuccitec.

[]s

brunorota

Sim fabio janela do navegador

Por esse pop-up não ia abrir uma aba a mais no navegador?

Eu quero que apenas carregue outra tela na mesma aba

F

Bruno,
Para abrir uma nova aba do navegador vc usa flash.net.navigateToUrl.
Uma aplicação Flex independente do objeto sempre usará a mesma aba. O PopUp é normalmente uma TitleWindow (q herda de Panel) q será mostrada como janela de sua aplicação modal ou não. Os navegadores num mesmo espaço vc pode ter várias informações / objetos e cada conjunto sendo mostrado no momento mais adequado.

[]s

R

tenta usar View State para este caso acredito que funcione.
Ou crie variaveis publicas [BINDABLE] nas telas e no momento do click voce instancia o form (se for TitleWindow, Module , Panel…)desejado e da carga nas variaveis.

Tela que envia os dados

private function jogaNome():void{
var janela: MeuTitleWindow = new MeuTitleWindow();
janela.Nome = Tx_Nome.Text;
//aqui voce chamaria de alguma forma o seu form com as variaveis carregadas (janela)
}

//Tela que Receberá os dados

[BINDABLE]

public static var v_Nome:String; // é static mas olhe que no momento que eu achamo eu instancio sempre um novo...
//aqui gets & sets

private function carregaNome():void{
MeuCampoTexto.Text = v_Nome;
}

Eu utilizo assim a algum tempo e em uns casos mais complicados, ex: Passo a tela INTEIRA como parametro, grid e tal . Funciona numa boa
Espero que ajude

FLWW

marcosFA

Não é recomendável passar a tela inteira como parâmetro. Nesse caso o melhor seria usar os queridos VOs(Pattern) para repassar as informações entre “telas” no flex.

Outra coisa, no Flex 3 era muito usado a estruturação de “telas”(views) usando o viewStack. Porém, no Flex 4 exista uma prática melhor, pois utiliza o conceito, muito útil, de States. Todos os objetos que herdam de UIComponent(incluindo “telas”) do SDK do Flex possuem a propriedade String “currentState”. Utilizando a ideia de states é possível criar telas que se ajustam de acordo com o ponto que o usuário está na aplicação.

<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" currentState="statePrimario">
          <x:tela1 includeIn="statePrimario"/>
          <x:tela2 includeIn="stateSecundario"/>
          <x:tela3 includeIn="stateTerciario"/>
          <x:tela4 includeIn="stateQuaternario"/>
</s:Group>

A prop “includeIn” diz que aquele componente visual só será visível se o Group estiver no state(estado) referenciado. Então para quem já usou muito o viewStack, consegue perceber como fica mais fácil manipular o “estado da aplicação” utilizando o conceito de states. É recomendável utilizar states ao invéz da ViewStack. As razões são:
-Uso de uma quantidade menor de componentes na tela, uma vez que o não é necessário um comp somente para controlar as “telas”(viewStack).
-Simplificação e legibilidade do código melhorada.

E por ai vai…

Abs,

Abs,

Criado 13 de outubro de 2010
Ultima resposta 18 de out. de 2010
Respostas 12
Participantes 5