04 - Obtendo Dados de Um Formulário [Guia #dev Android]

No post anterior começamos o nosso projeto Android criando um formulário, modificando apenas o arquivo XML de layout. Hoje, vamos ver como obter o que foi digitado no formulário para manipularmos dentro de uma Activity.

Por | @http://twitter.com/_rafaeltoledo Programação
<p>Ol&aacute; pessoal! No post anterior come&ccedil;amos o nosso projeto <a href="../post/9537-criando-um-formulario-no-android">Android criando um formul&aacute;rio</a>, modificando apenas o arquivo XML de&nbsp;<em>layout</em>. Hoje, vamos ver como obter o que foi digitado no formul&aacute;rio para manipularmos dentro de uma Activity.</p> <p>O primeiro passo &eacute; criar a classe de neg&oacute;cio (<strong>model</strong>) que armazenar&aacute; os dados vindos do formul&aacute;rio. Crie uma classe chamada&nbsp;<strong>Contato</strong>&nbsp;e salve-a no <strong>pacotenet.rafaeltoledo.meuscontatos.model</strong>. A classe ter&aacute; os campos&nbsp;<strong>nome</strong> e&nbsp;<strong>email</strong>, ambos do tipo&nbsp;<strong>String</strong>. Lembrando que sempre encapsulamos os campos das classes de neg&oacute;cio. A classe&nbsp;<strong>Contato</strong>&nbsp;ficar&aacute; assim:</p> <p><code>package net.rafaeltoledo.meuscontatos.model;<br /> <br />public class Contato {<br /> <br />    private String nome;<br />    private String email;<br /> <br />    public String getNome() {<br />        return nome;<br />    }<br /> <br />    public void setNome(String nome) {<br />        this.nome = nome;<br />    }<br /> <br />    public String getEmail() {<br />        return email;<br />    }<br /> <br />    public void setEmail(String email) {<br />        this.email = email;<br />    }<br />}</code></p> <p>Aqui v&atilde;o algumas dicas para o Eclipse: para gerar os m&eacute;todos&nbsp;<strong>get</strong><strong>&nbsp;</strong>e<strong>set</strong>&nbsp;automaticamente, pressione&nbsp;<strong>Alt + Shift + S</strong>&nbsp;e selecione a op&ccedil;&atilde;o&nbsp;<strong>Generate Getters and Setters&hellip;</strong>. Outra op&ccedil;&atilde;o &eacute;, ap&oacute;s criar os atributos, posicionar o cursor sobre eles, pressionar&nbsp;<strong>Ctrl + 1</strong>&nbsp;e selecionar a op&ccedil;&atilde;o&nbsp;<strong>create getter and setter for &lsquo;&hellip;&rsquo;.&nbsp;</strong>E pra formatar seu c&oacute;digo-fonte automaticamente, pressione&nbsp;<strong>Ctrl + Shift + F</strong>. Por &uacute;ltimo, pra corrigir os imports automaticamente, o atalho &eacute;&nbsp;<strong>Ctrl + Shift + O</strong>.</p> <p>A classe&nbsp;<strong>Contato</strong>&nbsp;simplesmente representa um contato com os dados que definimos no formul&aacute;rio (nome e e-mail). O pr&oacute;ximo passo, ent&atilde;o, &eacute; obtermos os dados do formul&aacute;rio XML e os colocarmos em um objeto do tipo&nbsp;<strong>Contato</strong>. Abra a Activity&nbsp;<strong>MeusContatos</strong>&nbsp;e edite-a com o seguinte c&oacute;digo.</p> <p><code>package net.rafaeltoledo.meuscontatos;<br /> <br />import net.rafaeltoledo.meuscontatos.model.Contato;<br />import android.app.Activity;<br />import android.os.Bundle;<br />import android.view.Menu;<br />import android.view.View;<br />import android.view.View.OnClickListener;<br />import android.widget.Button;<br />import android.widget.EditText;<br /> <br />public class MeusContatos extends Activity implements OnClickListener {<br /> <br />    private Contato contato = new Contato();<br /> <br />    @Override<br />    protected void onCreate(Bundle savedInstanceState) {<br />        super.onCreate(savedInstanceState);<br />        setContentView(R.layout.activity_meus_contatos);<br /> <br />        Button salvar = (Button) findViewById(R.id.salvar);<br />        salvar.setOnClickListener(this);<br />    }<br /> <br />    @Override<br />    public boolean onCreateOptionsMenu(Menu menu) {<br />        // Inflate the menu; this adds items to the action bar if it is present.<br />        getMenuInflater().inflate(R.menu.activity_meus_contatos, menu);<br />        return true;<br />    }<br /> <br />    @Override<br />    public void onClick(View v) {<br />        EditText nome = (EditText) findViewById(R.id.nome);<br />        EditText email = (EditText) findViewById(R.id.email);<br /> <br />        contato.setNome(nome.getText().toString());<br />        contato.setEmail(email.getText().toString());<br />    }<br />}</code></p> <p>O grande respons&aacute;vel pelo acesso aos componentes do formul&aacute;rio XML &eacute; a classe chamada&nbsp;<strong>R</strong>. Esta classe &eacute; gerada automaticamente, sendo atualizada de acordo com o conte&uacute;do mapeado no arquivo XML. At&eacute; por esse motivo, ela fica localizada na pasta&nbsp;<strong>gen</strong>&nbsp;do projeto, separada do restante dos c&oacute;digos-fonte.</p> <p>No c&oacute;digo-fonte, o que fazemos &eacute; obter o bot&atilde;o declarado no XML (linha 21) e em seguida atribuir um&nbsp;<strong>listener</strong>&nbsp;(ou &ldquo;ouvinte&rdquo;) para quando o bot&atilde;o for clicado. Assim, toda vez que algu&eacute;m clicar no bot&atilde;o&nbsp;<strong>salvar</strong>, ser&aacute; chamado um determinado m&eacute;todo.</p> <p>Para esse prop&oacute;sito, declaramos fizemos a nossa activity implementar a interface&nbsp;<strong>OnClickListener</strong>, fazendo com que ela tenha agora o m&eacute;todo<strong>onClick</strong>()&nbsp;que ser&aacute; chamado toda vez que o bot&atilde;o for clicado.</p> <p>Neste caso, obtemos os dois campos (<strong>nome&nbsp;</strong>e&nbsp;<strong>email</strong>) do XML, jogando-os em duas inst&acirc;ncias da classe&nbsp;<strong>EditText</strong>. Em seguida, obtemos seus conte&uacute;dos e os atribu&iacute;mos no objeto do tipo&nbsp;<strong>Contato</strong>&nbsp;chamado&nbsp;<strong>contato</strong>. Este objeto foi declarado como um membro privado da Activity, sendo previamente instanciado em sua pr&oacute;pria inicializa&ccedil;&atilde;o.</p> <p>Apesar de ainda n&atilde;o ser poss&iacute;vel ter uma visualiza&ccedil;&atilde;o disso funcionando, experimente executar e verificar se n&atilde;o ocorre nenhum erro ao pressionar o bot&atilde;o Salvar no formul&aacute;rio.</p> <p>Caso n&atilde;o tenha conseguido acompanhar ou algum outro problema, voc&ecirc; pode baixar o projeto abaixo.&nbsp;</p> <p style="text-align: center;"><strong>Download do projeto:</strong><br /><a href="https://www.oficinadanet.com.br/imagens/post/9616/meuscontatos-v02.zip"><img src="https://www.oficinadanet.com.br/imagens/post/9616/botaodownloadoficina.jpg" alt="" /></a></p>

Mais sobre: android, guiaandroid
Share Tweet
Mais compartilhados
Comentários