🧩 Exercícios - Cap 01: Seu Primeiro App (Activity, XML e Views)
🎯 Antes de começar
No Cap 01 você montou o Painel de Boas-Vindas: um TextView (txt_mensagem) e um botão (btn_iniciar) que troca a mensagem para “Boa sorte na sua jornada!” ao ser tocado. Depois de completar as Práticas Obrigatórias 1 e 2 (adicionar txt_rodape e personalizar a mensagem com seu nome), faça o exercício extra abaixo para praticar mais um pouco de findViewById + setOnClickListener.
💪 Exercício Extra 1: Botão de Reiniciar (15 min)
Objetivo: Adicionar um segundo botão que controla a mesma TextView, reforçando que várias Views podem reagir de forma independente na mesma tela.
Passos:
- Em
activity_main.xml, adicione um segundoButton, abaixo dobtn_iniciar(ou dotxt_rodape, se já tiver feito a Prática 1), comid="@+id/btn_reiniciar"e texto"Reiniciar". - Em
MainActivity.java, declare uma nova variávelprivate Button btnReiniciar;e localize-a comfindViewById(R.id.btn_reiniciar), do mesmo jeito quebtnIniciar. - Registre um
setOnClickListenerparabtnReiniciarque chamatxtMensagem.setText("Bem-vindo, Treinador!")— devolvendo o texto ao estado original. - Execute o app: toque em “Iniciar Aventura” (a mensagem muda) e depois em “Reiniciar” (a mensagem volta ao texto inicial).
✅ Resultado Esperado
- Tocar “Iniciar Aventura” muda o texto para a mensagem personalizada (Prática 2).
- Tocar “Reiniciar” devolve o texto para
"Bem-vindo, Treinador!". - Os dois botões funcionam de forma independente — tocar um não afeta o outro.
🆘 Resolução de Problemas Comuns
| Erro | Causa | Solução |
|---|---|---|
findViewById retorna null (app fecha com NullPointerException) |
O id usado no XML (@+id/btn_reiniciar) não é exatamente igual ao usado no Java (R.id.btn_reiniciar), ou o findViewById foi chamado antes de setContentView |
Confira se os dois nomes são idênticos (maiúsculas/minúsculas importam) e se findViewById vem depois de setContentView(R.layout.activity_main) |
| O botão “Reiniciar” não faz nada ao tocar | O setOnClickListener não foi registrado para btnReiniciar, ou foi registrado por engano para btnIniciar de novo |
Confirme que existe btnReiniciar.setOnClickListener(...) separado do listener de btnIniciar |
| O app não compila / ícone vermelho no Android Studio | Erro de digitação no id do XML ou no R.id correspondente no Java |
Revise a ortografia do id nos dois arquivos; o Android Studio gera a referência R.id.* automaticamente após salvar o XML |