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:
[code language=”java”]
public void criarObjetos()
{
botaoTransferir = (Button)findViewById(R.id.btnTransferir);
edtNome = (EditText)findViewById(R.id.edtNome);
edtIdade = (EditText)findViewById(R.id.edtIdade);
}
[/code]
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.
[code language=”java”]
//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);
}
});
[/code]
Chame o método criarObjetos no método onCreate da activity, o código deve ficar mais ou menos assim:
[code language=”java”]
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();
[/code]
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.
[code language=”java”]
private void criarObjetos()
{
tvNome = (TextView)findViewById(R.id.tvNome);
tvIdade = (TextView)findViewById(R.id.tvIdade);
}
[/code]
agora é necessário criar um método para fazer a leitura dos dados e colocar os valores nos componentes.
[code language=”java”]
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());
}
[/code]
Agora chame os métodos no Create da activity, deve ficar mais ou menos assim
[code language=”java”]
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_secundaria);
criarObjetos();
popularDados();
}
[/code]
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,