Android, utilizar dados entre varias telas Bundle/Intent

Bom dia,

Amigos, estou com o seguinte problema:
Eu preciso enviar informações de um edittext, para um textview, em outra tela, consigo enviar somente, se setar a tela no intent. No caso, eu precisaria navegar entre as telas, antes de chegar ao resultado.
No app, eu necessito enviar informações de varias activity (Tela_nv1, Tela_nv2,Tela_nv3) para uma activity final (Resposta).
Esse cod abaixo, eu consigo enviar as somente para a proxima activity, eu necessito de passar por todas as telas, enviando informações para ver todas na activity resposta.

Tela_nv1.java

btn_main = (Button)findViewById(R.id.btn_main); btn_nv2 = (Button)findViewById(R.id.btn_nv2); et1_nv1 = (EditText) findViewById(R.id.et1_nv1); et2_nv1 = (EditText) findViewById(R.id.et2_nv1); et3_nv1 = (EditText) findViewById(R.id.et3_nv1); et4_nv1 = (EditText) findViewById(R.id.et4_nv1); btn_nv2.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String textonv1 = et1_nv1.getText().toString(); String textonv2 = et2_nv1.getText().toString(); String textonv3 = et3_nv1.getText().toString(); String textonv4 = et4_nv1.getText().toString(); final ArrayList array = new ArrayList(); array.add(textonv1); array.add(textonv2); array.add(textonv3); array.add(textonv4); Intent intent = new Intent(Tela_nv1.this,Resposta.class); Collections.shuffle(array); String texto = array.toString(); Bundle bundle = new Bundle(); bundle.putString("guardainfo1", texto); intent.putExtras(bundle); startActivity(intent); } });

Resposta.java

[code]
TextView tv_resposta;

protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.resposta);
	tv_resposta = (TextView) findViewById(R.id.tv_resposta);
	//Intent getintent = getIntent();
	//String chegouaqui = (String)getintent.getSerializableExtra("guardainfo1"); 
	Intent intent = getIntent();
	Bundle bundle = intent.getExtras();
	String chegouaqui = bundle.getString("guardainfo1");
	tv_resposta.setText(chegouaqui);
}[/code]

Voce vai ter que reenviar os Bundles entre as Activities.

Terei que passar as informações e 1 por 1 ?

Sim

Ou então você cria uma Classe com um atributo publico e estático.

[code]public class SuaClasse {

public static int id;

}
[/code]

Para chamar:

  SuaClasse.id = 0;
  Log.i("", "" + SuaClasse.id);

NÃO CAIA na tentação de criar atributos estaticos.

Voce vai precisar colocar no Intent da praxima Activity o valor que voce quer levar.

E para retornar o valor para a Activity anterior voce vai precisar usar o startactivityForResult e setResult.

Olá
Uma alternativa é usar uma classe que adote o padrão Singleton, defina todas as variáveis que precisa passar de uma activity para outra e no final terá todas as informações para a activity Resposta.
Coloque checagens para garantir que os dados foram informados em cada activity. O local ideal para salvar os dados é antes do startActivity para a próxima etapa.
Veja no meu blog os posts Singleton e Singleton2, link abaixo.

Abraço

Eu nunca utilizo atributos estáticos, mas qual seria o problema de usar ?

Armadilhas, um dia voce vai querer usar sua Activity por outro fluxo, mas voce esquece de popular aquele bendito campo estatico, então era melhor ter passado por referencia.

Porque você não utiliza o método putExtra da classe Intent e passa o próprio Bundle nela? :slight_smile:

Na hora do retorno, tem que utilizar o startActivityForResult e setResult, como o Marky falou!