Neste post vamos ver como transferir dados primitivos de uma activity para outra, isso é muito útil para preencher telas de demonstração de dados, por exemplo, em uma activity você faz um processamento de dados e deseja exibir esses dados processados em outra activity (por activity entenda simplesmente tela).

Usando o eclipse crie um novo projeto Android Application Project com os seguintes dados:

TransferindoDados_imagem1

Nomeie a activity como ActivityPrincipal e adicione nessa activity 2 TextView, 2 EditText e um Button, os textView não precisam ter o seu id modificado, modifique apenas os ids dos EditText, eu usei os nomes: edtNome, edtIdade e btnTransferir.

Crie uma segunda activity com o nome de ActivitySecundaria.

Na activity principal crie um método para associar estes componentes no código, exemplo abaixo:


public void criarObjetos()
 {
 botaoTransferir = (Button)findViewById(R.id.btnTransferir);
 edtNome = (EditText)findViewById(R.id.edtNome);
 edtIdade = (EditText)findViewById(R.id.edtIdade);
 }

Crie um listener para escutar o evento click do botão e programe conforme o exemplo, substituindo o nome dos botões conforme você colocou.


//Criar um listener para escutar o evento de click no botão
 botaoTransferir.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 //Cria um bundle para passar os dados para a outra Activity
 Bundle b = new Bundle();
 b.putString("nome", edtNome.getText().toString());
 Integer idade = Integer.parseInt(edtIdade.getText().toString());
 b.putInt("idade", idade);

 //Cria uma intent para abrir a outra Activity
 Intent telaSecundaria = new Intent(getApplicationContext(), ActivitySecundaria.class);
 //adiciona os dados na instância criada
 telaSecundaria.putExtras(b);
 startActivity(telaSecundaria);
 }
 });

Chame o método criarObjetos no método onCreate da activity, o código deve ficar mais ou menos assim:


super.onCreate(savedInstanceState);
 //Define a activity que será chamada no Create
 setContentView(R.layout.activity_principal);
 //Chama o método para criar instâncias dos controles da tela
 criarObjetos();

Agora altere a activity secundária para efetuar a leitura dos dados passados, para isso teremos que adicionar 2 TextView e alterar os ids, eu usei tvNome e tvIdade.

crie um método para associar os componentes da activity ao código conforme foi feito na activity principal.

private void criarObjetos()
 {
 tvNome = (TextView)findViewById(R.id.tvNome);
 tvIdade = (TextView)findViewById(R.id.tvIdade);
 }

agora é necessário criar um método para fazer a leitura dos dados e colocar os valores nos componentes.


private void popularDados()
 {
 //Preenche uma instância de um Bundle com os dados que foram passados
 Bundle b = getIntent().getExtras();
 //Lê os dados do Bundle passando os dados para os componentes da Activity
 tvNome.setText(tvNome.getText() + b.getString("nome"));
 Integer idade = b.getInt("idade");
 tvIdade.setText(tvIdade.getText() + " " + idade.toString());
 }

Agora chame os métodos no Create da activity, deve ficar mais ou menos assim


@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_secundaria);
 criarObjetos();
 popularDados();
 }

Estando tudo certo, basta rodar a aplicação  no emulador e o resultado deve ser mais ou menos igual às imagens abaixo.

TransferindoDados_imagem2TransferindoDados_imagem3

Código Fonte: TransferindoDadosEntreActivities

VN:F [1.9.22_1171]
Rating: 5.5/10 (2 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
Transferindo dados (tipos primitivos) entre Activities no Android, 5.5 out of 10 based on 2 ratings