Livro 1 - Meu primeiro aplicativo
6. Atribuindo uma ação ao botão
Inicialmente ao se clicar no botão do aplicativo nada irá acontecer. Isso se deve ao fato que nenhuma ação foi programada para ser executada. Para atribuir uma ação a um botão devemos ir no arquivo MainActivity.java e adicionar ao elemento Button um código para ser executado. Ação que será executa usará uma instância da classe Toast para mostrar uma mensagem simples na tela.
Também para fins de internacionalização abra o arquivo strings.xml e adicione o campo welcomeToast:
<resources>
<string name="app_name">Meu app</string>
<string name="welcome">Bem vindo ao meu app</string>
<string name="welcomeButtonText">Enviar mensagem</string>
<string name="welcomeToast">Bem-vindo!</string>
</resources>
Agora, complete o código da classe MainActivity.java com:
package ...
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
//Carregamento padrão de toda atividade
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//Acessa a referência ao botão no layout (WelcomeButton) e registra em uma variável
val welcomeButton = findViewById(R.id.welcomeButton) as Button
//Configura o evento de clique no botão para executar uma ação
welcomeButton.setOnClickListener{ acao() }
}
fun acao(){
//Cria uma mensagem do tipo Toast
val mensagem = Toast.makeText(
this@MainActivity, //contexto da aplicação
R.string.welcomeToast, //mensagem textual
Toast.LENGTH_LONG) //tempo de duração (CURTO|LONGO)
//Manda exibir a mensagem na tela
mensagem.show()
}
}
Primeiramente, devem ser incluídos diversos pacotes nativos do Android para o uso dos componentes. Normalmente essa tarefa é automática pois o Android Studio deduz ao digitar o código quais pacotes devem ser importados. A tecla de atalho ALT+ENTER pode ser usada para ativar a importação automática.
A principal parte do código está no método onCreate pois é nele onde fazemos as configurações iniciais de todos os componentes da Activity. Uma instância do componente Button, criado no desenho da tela do aplicativo, é obtida através do método findViewById. Esse método recebe como parâmetro o nome do componente a ser buscado, isto é, seu id, valor de referência disponibilizado pela classe R. A classe R é criada automaticamente pelo sistema e registra todos os recursos criados no projeto. É através dela que conseguimos acessar os diversos recursos do aplicativo como as Views criadas nos layouts, as strings, cores, dimensões, imagens, etc.
Uma vez obtida a instância do botão na tela, ao mesmo se é atribuído uma ação. O método setOnClickListener configura o componente para disparar uma ação quando for acionado o evento de clique ou toque sobre o botão. Por simplicidade, reduzimos o código do botão para simplesmente invocar um método acao, assim separando o restante da lógica de programação da função de criação. Esta é uma recomendação de boas práticas de programação onde não misturamos códigos de criação e lógica da aplicação, uma vez que isso deixaria o método onCreate longo e bagunçado. Assim, a implementação da funcionalidade do botão em si ficará dentro do método separado, nesse caso, acao.
Nesse aplicativo vamos fazer com que o botão dispare uma mensagem Toast com um texto boas-vindas. Essa mensagem é um recurso configurado no arquivo strings.xml e pode ser acessado pela classe R como um recurso string: welcomeToast. Assim, se dispara uma Toast no contexto atual da aplicação (tela atual), com a mensagem de boas-vindas e uma duração longa (valor esse, pré-definido pela classe Toast).

Figura 35. Execução do aplicativo mostrando uma mensagem Toast
Rode a aplicação novamente com a nova funcionalidade implementada. Ao se clicar no botão, uma mensagem de boas vindas vai aparecer na tela e, logo em seguida, desaparecer.