sexta-feira, 11 de novembro de 2011

Passagem de parâmetros entre activities.


Neste artigo vou demonstrar a passagem de parâmetros para uma activity através de objetos do tipo Bundle.

A activity inicial tem um campo pra receber um texto e um botão com um listener.

Activity inicial: PrimeiroExemplo.java
Layout: Main


  1. package br.livro.android.cap2;
  2.  
  3. import android.app.Activity;
  4. import android.content.*;
  5. import android.os.Bundle;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.view.View.*;
  9. import android.widget.Button;
  10. import android.widget.*;
  11. import android.widget.TextView;
  12.  
  13. public class PrimeiroExemplo extends Activity {
  14.     /** Called when the activity is first created. */
  15.     @Override
  16.     public void onCreate(Bundle icicle){
  17.         super.onCreate(icicle);
  18.         setContentView(R.layout.main);
  19.        
  20.         //Cria Objetos
  21.         Button botaoTelaUm = (Button) findViewById(R.id.botao);
  22.         final EditText campoDeDigitação = (EditText) findViewById(R.id.campodedigitacao);
  23.        
  24.         //Cria botão com Listener e passagem de parâmetros.
  25.         botaoTelaUm.setOnClickListener(new Button.OnClickListener () {
  26.             public void onClick(View v){
  27.                 Intent it = new Intent(v.getContext(), TelaDois.class);
  28.                 Bundle params = new Bundle();
  29.                 String resposta = campoDeDigitação.getText().toString();
  30.                 params.putString("mensagem", resposta);
  31.                 it.putExtras(params);
  32.                 startActivity(it);
  33.             }
  34.             });                    
  35.          }
  36. }


Para passar parâmetros de uma activity para outra, se cria um objeto do tipo Bundle e se usa o método putExtras(Bundle) na intent.

Porém, antes disso, devem ser colocados valores no objeto do tipo Bundle. No caso, como coloquei uma String, eu usei o método putString(chave, valor), mas poderia ter colocado um putBoolean no caso do valor ser um boolean e assim por diante... .  O valor recebido foi a variável "resposta" que recupera o texto escrito no EditText "campoDeDigitação" com os métodos "getText()" e "toString()".




 Agora vamos para a activity chamada: TelaDois
Layout: telachamada.xml


  1. package br.livro.android.cap2;
  2.  
  3. import android.app.Activity;
  4. import android.content.*;
  5. import android.os.Bundle;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.view.View.*;
  9. import android.widget.Button;
  10. import android.widget.CheckBox;
  11. import android.widget.TextView;
  12.  
  13. public class TelaDois extends Activity {
  14.         /** Called when the activity is first created. */
  15.         @Override
  16.         public void onCreate(Bundle icicle){
  17.             super.onCreate(icicle);
  18.             TextView txt = new TextView(this);
  19.             Intent it = getIntent();
  20.             Bundle params = it.getExtras();
  21.             if (params != null){
  22.             String texto = params.getString("mensagem");
  23.             txt.setText(texto);
  24.             setContentView(txt);}
  25.             if (params == null){
  26.                 txt.setText("Nenhuma mensagem foi enviada");
  27.                 setContentView(txt);
  28.             }    
  29.         }
  30.  }
  31.  


Da mesma maneira é preciso um  método pra recuperar a intent, que é o "getIntent()". Após recuperada, é preciso recuperar os objetos dados como extras com o método "getExtras()". Depois se atribui ao texto "txt" o parametro String "mensagem" do Bundle da activity anterior, com o método "getString". As instruções condicionais são para o caso de nenhum parâmetro ter sido passado.




Nenhum comentário:

Postar um comentário