Nesta vídeo aula eu vou fazer a demostração do CheckBox. Neste meu aplicativo eu coloquei duas Check Boxes. Uma com o texto "Primeira Opção e outra com o texto "Segunda Opção". Quando o usuário clica na check box ele recebe uma mensagem que pode ser de você selecionou ou você cancelou a seleção de uma determinada check box. Por exemplo, eu vou clicar novamente nessa check box e a mensagem que eu vou receber é: você cancelou a primeira opção. Quando eu clicar novamente é: você selecionou a primeira opção. O mesmo ocorre com a segunda check box. Ao clicar no botão click me o usuário recebe o resumo do que foi selecionado. Por exemplo, eu cliquei e o usuário será informado de que selecionou as duas opções. Eu adicionei essas check boxes no código xml utilizando a tag CheckBox, eu utilizei LinearLayout e coloquei no xml duas check boxes, uma abaixo da outra. A primeira check box eu coloquei como id/checkbox_1 e a segunda check box eu coloquei como id/checkbox_2. Ambas eu configurei como match_parent para largura e wrap_content para altura. Elas receberam textos diferentes. A primeira recebeu como texto a frase primeira opção, e a segunda recebeu como texto a frase segunda opção. Percebam que ambas podem receber o atributo onClick porque elas herdam de botão. Ambas eu coloquei o mesmo método que será disparado como gatilho, o nome do método é onCheckboxClicked Eu coloquei onCheckboxClicked para diferenciar do método que será disparado pelo botão que é o método onClick. Vamos agora para o método Java. No código Java, eu comecei criando referências para as duas check boxes e colocando essas referências como atributo dessa classe. No método onCheckboxClicked, que será disparado quando algum dos check box for chamado, eu coloquei a seguinte assinatura: o nome do método é o nome que eu coloquei no código xml, ele deve ser público, deve retornar void, e deve receber uma view como parâmetro. Essa view é simplesmente a check box que foi clicada. Nesse caso, a primeira coisa que eu faço sempre é transformar essa view que veio por parâmetro check box fazendo uma conversão, e logo depois eu verifico se essa check box está sendo clicada, ou melhor, selecionada ou desselecionada e gravo isso na variável boolean checked. Feito isso, eu criei switch para verificar se a checkbox que foi clicada foi a checkbox ou a checkbox dois, e eu faço isso comparando o id da view que veio por parâmetro com as ids que eu conheço das checkboxes que são r.id.checkbox_1 r.id.checkbox_2. Após isso, eu verifico se o que aconteceu foi a seleção ou a desseleção da checkbox utilizando a variável checked que eu criei no início do método. Agora no método onClick. No método onClick o que eu recebo por parâmetro é o botão que foi clicado e não a checkbox. Nesse caso, eu não posso fazer o mesmo que eu fiz anteriormente, que era simplesmente converter a view que veio por parâmetro para a checkbox. Por quê? Porque a view aqui é botão. Nesse caso, eu preciso do atributo que eu gerei no método findViewByid com o método findViewByid. Então, primeiro eu pego esse atributo que é o checbox_1 e o checkbox_2 que representam as instâncias da checkbox. E após isso eu verifico se ela está selecionada ou não. Feito isso, para gerar a mensagem eu simplesmente verifico se ambas estão selecionadas, eu escrevo para o usuário que ele selecionou as duas opções. Se apenas a checkbox_1 está selecionada, eu aviso que ele selecionou apenas a primeira opção. Se apenas a checkbox_2 está selecionada, eu aviso que ele selecionou apenas a segunda opção. Caso contrário eu aviso que o usuário não selecionou nenhuma opção.