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:
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.
Código Fonte: TransferindoDadosEntreActivities
Transferindo dados (tipos primitivos) entre Activities no Android,