segunda-feira, 23 de abril de 2012

Programar para Android - 07


Um botão que muda um texto

Criamos um novo projeto Try05 da maneira habitual e apagamos a string do hello world, para começarmos com uma Activity já pronta, mas vazia.
Criamos uma string chamada tvText e com o conteúdo Número de clicks: e outra string com o nome btText e conteúdo Clica-me.
No layout (main.xml) adicionamos um botão e um TextView. Ao botão associamos o texto btText e à TextView associamos o texto tvText.
A ideia é que ao clicar no botão o texto vá indicando quantos clicks foram contados.

Vamos a Try05Activity e adicionamos a seguinte variável à atividade:

int numClicks = 0;

Esta variável vai contar os clicks e obviamente começa com 0 clicks.
De seguida criamos o seguinte método:


    private void updateText() {
    String s = getString(R.string.tvText) +  " " + numClicks;
    TextView tv1 = (TextView) findViewById(R.id.textView1);
    tv1.setText(s);    
    }

Este método atualiza o texto que pareca na TextView. Começa por definir uma string construída a partir do conteúdo da string tvText com um espaço e mais  número de clicks registados. Para podermos aceder ao texto na TextView textView1 (este é o nome dado à TextView criada no main.xml) precisamos de um objeto a que chamamos tv1 e fazemos a ligação ao texto já existente usando o método findViewById(). A última linha atualiza o texto.

Precisamos agora de um método que aumente o número de clicks cada vez que se clica no botão. Este método é muito simples de implementar. Vamos chamar-lhe processClick().


    public void processClick(View v) {
    numClicks++;
    updateText();
    }

Vamos fazer uma alteração ao método onCreate():


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        updateText();
    }

Apenas foi adicionada a linha a negrito. Esta linha apenas corrige uma questão estética, faz aparecer o 0 (zero) quando o botão ainda não foi clicado nenhuma vez.

Se executarmos agora o código, não é apresentada nenhum erro, mas o programa não faz nada. Falta indicar que vai ser o método processClick() a processar o clicks no botão. Antes fizemos isso com o método setOnClickListener() do botão e tivemos de dizer que a atividade implementava a interface OnClickListener.
Desta vez vamos apenas ao ficheiro main.xml (diretamente ao XML) e acrescentamos esta linha no botão:

        android:onClick="processClick"

Esta linha indica que o método processClick() vai ser o responsável pelo processamento dos clicks neste botão. É claro que o nome do método pode ser outro qualquer, mas o método tem de ser public, não retornar valores (ou seja, ser void) e aceitar um parâmetro do tipo View.

Podemos assim no Android usar o XML para definir o layout da atividade e também para definir o comportamento de alguns componentes ao reagir a determinados eventos (como neste caso o click num botão). Assim na parte de código só fazemos mesmo código. Não é preciso fazer meio metro de código só para criar textos e botões e definir o seu comportamento. O Android permite separar o layout e comportamento para o XML e liberta o ficheiro de código para conter código "útil".


Sem comentários:

Enviar um comentário