Hoje falarei de uma das formas de se enviar conteúdos de uma tela a outra.
O exemplo que fiz foi bem simples, coloquei uma caixa de texto em uma tela e um botão. Na outra apenas um TextView. O texto digitado na primeira tela será recebido pela segunda tela e exibido no TextView.
As telas ficaram assim:
O código ficou bem simples. Vou me ater as classes java, já que criar as duas telas é muito simples utilizando o xml:
Classe Main:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {private EditText edtNome;private Button btnEnviar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//Tratando os campos da telaedtNome = (EditText) findViewById(R.id.edtNome);btnEnviar = (Button) findViewById(R.id.btnEnviar);btnEnviar.setOnClickListener(this);}@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this,NovaTela.class);intent.putExtra("Nome",edtNome.getEditableText().toString());startActivity(intent);}}
Primeira coisa a observar: A classe implementa a interface View.OnClickListener. Esta é uma forma de se capturar o click do botão.
No método OnClick fica o código que será executado quando o botão for clicado.
Utilizamos a classe Intent e seu método putExtra. É através dele que transferimos conteúdo entre telas. Percebam que criamos uma chave chamada "Nome" e pegamos o conteúdo do edtNome, variável que represente o campo da tela.
Na próxima classe, NovaTela.class teremos que preparar o tereeno para que ela receba o conteúdo passado.
Classe Nova Tela:
public class NovaTela extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_nova_tela);TextView texto = (TextView) findViewById(R.id.txtSaudacao);Bundle extras = getIntent().getExtras();if (extras!= null) {texto.setText("Texto Digitado:" + extras.getString("Nome"));}}}
O importante aqui é observar este trecho de código:
Bundle extras = getIntent().getExtras();
O método getIntent recupera a intent que chamou a tela atual.
O método getExtras retorna um map com todos os extras da intent.
A classe Bundle implementa um map de Strings.
Depois verificamos se existe algum estra e se existir pegamos o com a chave nome e mostramos Textview da tela:
if (extras!= null) {texto.setText("Texto Digitado:" + extras.getString("Nome"));}
Última dica, se fosse preciso propagar o conteúdo para uma terceira tela teríamos que fazer a mesma coisa, ou seja a passagem só funciona tela a tela.
Nenhum comentário:
Postar um comentário