6. Lógica da Aplicação
6.3. Inicialização da Atividade
No momento da criação de uma Activity, o método onCreate é invocado, e é neste método que devem ser configurados os aspectos iniciais do aplicativo. Aqui, faremos a conexão entre os elementos da interface gráfica e a programação, bem como a implementação do tratamento de eventos.
Para acessar um elemento da interface gráfica, utilizamos o método findViewById, que, por meio de seu parâmetro, retorna uma referência (objeto) ao elemento correspondente criado no arquivo de layout. Neste ponto, a classe R desempenha um papel crucial, pois, por meio do ID da View, ela consegue localizar corretamente o elemento na tela e retornar sua referência.
No que diz respeito ao tratamento de eventos, o aplicativo precisará implementar duas classes abstratas: TextWatcher (usada para reagir à inserção de texto) e SeekBarListener (que responde às interações com a barra de progresso). Para adicionar um tratamento de eventos ao EditText, inserimos o objeto criado a partir da classe abstrata utilizando o método addTextChangedListener(). No caso do tratamento de eventos para a SeekBar, adicionamos o objeto criado pela classe abstrata com o método setOnSeekBarChangeListener(). É importante notar que ao incluir esta parte do código, o programa indicará um erro, o que é normal, uma vez que ainda não criamos os objetos necessários. Faremos isso nos próximos capítulos.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//configura as referências aos componentes gráficos na tela
amountEditText = findViewById(R.id.amountEditText)
amountTextView = findViewById(R.id.amountTextView)
percentTextView = findViewById(R.id.percentTextView)
percentSeekBar = findViewById(R.id.percentSeekBar)
tipTextView = findViewById(R.id.tipTextView)
totalTextView = findViewById(R.id.totalTextView)
//apresenta os valores iniciais da taxa e total em padrão de moeda
tipTextView?.text = currencyFormat.format(0.0)
totalTextView?.text = currencyFormat.format(0.0)
//acessa o componente SeekBar e adiciona um tratamento de eventos
percentSeekBar?.setOnSeekBarChangeListener(seekBarListener)
//acessa o componente EditText e adiciona um tratamento de eventos
amountEditText?.addTextChangedListener(amountEditTextWatcher)
}