Olá pessoal, Beleza? Primeiro feliz ano novo para todos.
Estou passando por um pequeno problema com consumo de energia e estou acreditando que é devido a tantas variaveis estaticas que tive que usar. Então comecei a pesquisar como passar valores
de um Activity para outro, e descobri o intent, mas nao consigo enviar informacao via intent do segundo intent para o primeiro. Ja tentei das seguintes maneiras:
Activity pai.
Intent iSearch = getIntent();
iSearch.putStringExtra("variavel", "valor");
Activity filho.
Intent iSearch = getIntent();
iSearch.getStringExtra("variavel", "valor");
No segundo caso é:
Activity pai.
Intent iSearch = Intent.parseUri("content://package.classe", 0);
iSearch.putStringExtra("variavel", "valor");
Activity filho.
Intent iSearch = Intent.getIntent("content://package.classe", 0);
iSearch.getStringExtra("variavel");
e nos dois casos a variavel retorna null. Alguem poderia me ajudar por favor?
Uma dúvida suas activity estão no mesmo projeto??
Se estiver faça assim para passar valor
Intent intent = new Intent(this, SegundaActivity.class);
intent.putExtra("fileGen", fileGen);
startActivity(intent);
E na SegundaActivity.class
Bundle extras = getIntent().getExtras();
if (extras != null) {
String fileGen = extras.getString("fileGen");
}
Espero que ajude,
abs,
Evandro
Ola,
Eu estou estutando android agora, mas acho que vc tem que passar o package + nome na chave da informação extra:
Ex.:
http://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String,%20java.lang.CharSequence[])
Não, fileGen é o nome da variável que ele irá recuperar na outra Activity.
Por exemplo
String fileGen = "teste.txt";
Intent intent = new Intent(this, SegundaActivity.class);
intent.putExtra("fileGen", fileGen);
startActivity(intent);
E para recuperar na outra activity,
Bundle extras = getIntent().getExtras();
if (extras != null) {
String fileGen = extras.getString("fileGen");
}
att,
Evandro
Blz. Vo fazer algums testes e volto aqui no forum
A não ser que voce queira abrir uma nova “Primeira Activity” através do novo Intent que deve trazer o resultado de volta. Voce precisa fazer isso através do Result.
Na primeira Activity voce abre com startActivityForResult.
Na segunda Activity, antes de um finish(), voce faz setResult (com um Intent).
Na primeira Activity vai ser disparado o onActivityResult, dai lá voce pode pegar o resultado do Intent que voce passou da segunda.
Obrigado pelas respostas. Eu estava pensando, ja que nao tem como eu armazenar essas variaveis via intent sem um onActivityResult eu substituir isso por
ContentProvider seria uma boa? Se sim, alguem teria algum link com exemplo facil para mim comparar ?
Content Provider é para fornecer acesso ao banco de dados de sua aplicação para outras aplicações a grosso modo, acho que não é o que você precisa.
No caso que o Marky (startActivityForResult) citou, se ele me permite :), é o caso de sua primeira activity, que chamou a activity2 precisar do retorno dela para a primeira, por exemplo,
na activity 1 vc tem um botão chamado pesquisar fornecedores, que chamara a activity2 onde conterá uma lista de fornecedores e quando selecionado um fornecedor este deverá ser retornado para a activity1, neste caso vc precisa do startActivityForResult para que retorne o resultado selecionado na activity2
Um exemplo disso é o projeto abaixo de um fileChooser que eu fiz :P, que é como eu citei acima, vc tem um botão selecionar arquivo no na sua activity1 que chama o fileChooser, o fileChooser após a seleção do arquivo retorna ele para a activity que o chamou.
http://code.google.com/p/android-file-chooser/
No caso de vc só precisar receber um valor na segunda activity vc não precisa do startActivityForResult somente enviar as variáveis como eu citei irá resolver.
Espero que tenha ficado claro ;),
abs,
Evandro
Muito obrigado pela resposta, mas é o sequinte: Eu tenho um Activity principal q ultiliza o TabHost, que contem mais 3 activity, no caso eu preciso de que o activity principal
tenha acesso aos dados dos 3 outros activitys, entao nao tem como eu fazer uma chamada startActivity no caso. A aplicacao e um formulario com varias abas e preciso que
o activity principal acesse os dados das demais para poder processa-las.
Cara eu não sei a quantidade de dados que vc tem nestas tabs, mas vc não pode ir salvando estes dados para depois recuperar?
[quote=pedrohms] Muito obrigado pela resposta, mas é o sequinte: Eu tenho um Activity principal q ultiliza o TabHost, que contem mais 3 activity, no caso eu preciso de que o activity principal
tenha acesso aos dados dos 3 outros activitys, entao nao tem como eu fazer uma chamada startActivity no caso. A aplicacao e um formulario com varias abas e preciso que
o activity principal acesse os dados das demais para poder processa-las.[/quote]
Isto não seria o caso de vc implementar uma android.app.Application? De forma a compartilhar as informações por todo a sua aplicação?
http://developer.android.com/reference/android/app/Application.html