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