Eu tenho 3 aulas no meu exemplo: Classe A, a atividade principal. A classe A chama um startActivityForResult:
Intent intent = new Intent(this, ClassB.class);
startActivityForResult(intent, "STRING");
Classe B, esta classe é uma TabActivity:
Intent intent = new Intent(this, ClassC.class);
tabHost.addTab...
Classe C, essa classe é uma atividade regular:
Intent intent = this.getIntent();
intent.putExtra("SOMETHING", "EXTRAS");
this.setResult(RESULT_OK, intent);
finish();
onActivityResult é chamado na Classe A, mas o resultCode é em RESULT_CANCELED
vez de RESULT_OK
e a intenção retornada é nula. Como faço para retornar algo da atividade dentro de um TabHost?
Percebo que o problema é que minha Classe C está na verdade executando dentro da Classe B, e a Classe B é o que está retornando RESULT_CANCELED
à Classe A. Apenas não conheço uma solução alternativa ainda.
fonte
http://tylenoly.wordpress.com/2010/10/27/how-to-finish-activity-with-results/
Com uma ligeira modificação para "param_result"
fonte
setResult
foi a principal coisa. Defina-o como algo ou um valor, por exemplo,RESULT_OK
e você estará pronto;setResult(RESULT_OK);
. Ajudou-me, +1Intent.FLAG_ACTIVITY_FORWARD_RESULT?
fonte
Você também pode implementar um onActivityResult na Classe B e iniciar a Classe C usando startActivityForResult. Depois de obter o resultado na Classe B, defina o resultado lá (para a Classe A) com base no resultado da Classe C. Não tentei isso, mas acho que isso deve funcionar.
Outra coisa a se observar é que a Atividade A não deve ser uma atividade de Instância única. Para que startActivityForResult funcione, sua Classe B precisa ser uma sub atividade da Atividade A e isso não é possível em uma atividade de instância única, a nova Atividade (Classe B) inicia em uma nova tarefa.
fonte
Para iniciar a Atividade 2 da Atividade 1 e obter resultado, você pode usar startActivityForResult e implementar onActivityResult na Atividade 1 e usar setResult na Atividade2.
fonte