[Activity] - Salvar dados na transição [Resolvido]

4 respostas
lina

Oi,

Estou fazendo um Software Android (2.1) que contem 4 Activity.

Em cada uma delas eu tenho um botão AVANÇAR e um botão VOLTAR.

Na transição de uma Activity para a outra eu sou obrigada a usar o método finish() e até então os campos e valores criados desta janela se perdem:

new View.OnClickListener()
			{
				public
				void            	onClick
							(
								View            ao_view
							)
				{
					//
					// Fecha a janela atual.
					//
					finish();
					
					//
					// Abre a outra janela de coleta.
					//
					startActivity
					(
						new Intent
						(
							ao_view.getContext(), 
							ColetaTwo.class
						)
					);
				}
			}

A última Activity da aplicação é referente a confirmação dos dados digitados nas Activities anteriores. Como devo proceder ? Sim. Sou nova no lance Android.

Tchauzin!

4 Respostas

lina

Oi,

Bom.. eu meio que resolvi esse problema, usando o Intent para passar as variáveis como parâmetro.

Na segunda Activity:

Intent lo_intent = new Intent(ao_view.getContext(), TerceiraActivity.class);
lo_intent.putExtra("teste", io_txf_teste.getText());
lo_intent.putExtra("teste2", io_spn_teste2.getSelectedItem().toString());
lo_intent.putExtra("teste3", io_spn_teste3.getSelectedItem().toString());
finish();
startActivity(lo_intent);

Na terceira Activity:

Intent lo_intent_dados = getIntent(); // Recebo os dados da segunda Activity.

Intent lo_intent = new Intent(ao_view.getContext(), QuartaActivity.class); // Crio um novo Intent para a chamada da QuartaActivity.
lo_intent.putExtra("novoteste", io_txf_novoteste.getText());
lo_intent.putExtra("teste", lo_intent_dados.getStringExtra("teste")); // Pegando da segunda Activity.
lo_intent.putExtra("teste2", lo_intent_dados.getStringExtra("teste2")); // Pegando da segunda Activity.
lo_intent.putExtra("teste3", lo_intent_dados.getStringExtra("teste3")); // Pegando da segunda Activity.
finish();
startActivity(lo_intent);

Na quarta, eu alimento os meus componentes dessa forma:

Intent lo_intent_confirmar = getIntent();
setText(lo_intent_confirmar.getStringExtra("teste"));
setText(lo_intent_confirmar.getStringExtra("teste2"));
setText(lo_intent_confirmar.getStringExtra("teste3"));
setText(lo_intent_confirmar.getStringExtra("novoteste"));

Eu só não entendi porque não apresentou nada ao chamar o teste e o novoteste. Apenas para o teste2 e teste3 foi apresentado o conteúdo.

Tchauzin!

Marky.Vasconcelos

Lina e sua identação…

Mas então, o código parece correto, o que exatamente nao esta funcionando?

E outra, voce pode dar finish na activity depois de dar startActivity.

lina

Oi,

Descobri!

Precisei adicionar o .toString() também no EditText:

Intent lo_intent = new Intent(ao_view.getContext(), TerceiraActivity.class); lo_intent.putExtra("teste", io_txf_teste.getText().toString()); // AQUI! lo_intent.putExtra("teste2", io_spn_teste2.getSelectedItem().toString()); lo_intent.putExtra("teste3", io_spn_teste3.getSelectedItem().toString()); finish(); startActivity(lo_intent);

Vai entender!

Tchauzin!

Marky.Vasconcelos

Ahhh…

EditText#getText() retorna um Editable

O valor em string pode ser obtido com toString mesmo.

Criado 6 de março de 2012
Ultima resposta 6 de mar. de 2012
Respostas 4
Participantes 2