5 - Control CheckBox

El objetivo de este concepto es seguir practicando lo visto hasta ahora para la creación de un proyecto con Android Studio e incorporar el control visual CheckBox

Crear un proyecto llamado Proyecto004.

Problema:

Realizar la carga de dos números en controles de tipo EditText ("Number"). Mostrar en las propiedades "hint" de cada componente un mensaje que solicite la carga de los valores. Disponer dos controles de tipo CheckBox para seleccionar si queremos sumar y/o restar dichos valores. Finalmente mediante un control de tipo Button efectuamos la operación respectiva. Mostramos el o los resultados en un TextView.

Lo nuevo en este problema es la inserción de dos objetos de la clase CheckBox que se encuentra en la pestaña "Widgets":

control checkbox

Debemos iniciar las propiedades "text" para mostrar un texto y la propiedad "id" para poder hacer referencia al CheckBox en el programa en Kotlin.

El primer CheckBox definimos su "id" con el valor check1 y el segundo con el valor check2.

Luego la interfaz gráfica final para este problema y los nombres de los controles o componentes visuales los podemos ver en la ventana "Component Tree":

control checkbox

Tener en cuenta que siempre debemos presionar el ícono "Infer Constraints" para enlazar los objetos y ubicarlos.

Controlar que fijamos los valores de las propiedades "id" de cada objeto: et1, et2, check1, check2, tv1 y button.

Código fuente:

package com.tutorialesprogramacionya.proyecto004

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.CheckBox
import android.widget.EditText
import android.widget.TextView

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val et1 = findViewById(R.id.et1) as EditText
        val et2 = findViewById(R.id.et2) as EditText
        val cb1 = findViewById(R.id.check1) as CheckBox
        val cb2 = findViewById(R.id.check2) as CheckBox
        val tv1 = findViewById(R.id.tv1) as TextView
        val boton1 = findViewById(R.id.button) as Button
        boton1.setOnClickListener {
            var resultado=""
            if (cb1.isChecked)
                resultado = "Suma = ${et1.text.toString().toInt() + et2.text.toString().toInt()} "
            if (cb2.isChecked)
                resultado += "Resta = ${et1.text.toString().toInt() - et2.text.toString().toInt()}"
            tv1.text = resultado
        }
    }
}

En el método onCreate obtenemos la referencia de los seis objetos:

        val et1 = findViewById(R.id.et1) as EditText
        val et2 = findViewById(R.id.et2) as EditText
        val cb1 = findViewById(R.id.check1) as CheckBox
        val cb2 = findViewById(R.id.check2) as CheckBox
        val tv1 = findViewById(R.id.tv1) as TextView
        val boton1 = findViewById(R.id.button) as Button

Cuando se presiona el botón verificamos cada CheckBox y concatenamos en un String la suma si está seleccionado el primer CheckBox y la resta, seguidamente mostramos el resultado en el TextView:

        boton1.setOnClickListener {
            var resultado=""
            if (cb1.isChecked)
                resultado = "Suma = ${et1.text.toString().toInt() + et2.text.toString().toInt()} "
            if (cb2.isChecked)
                resultado += "Resta = ${et1.text.toString().toInt() - et2.text.toString().toInt()}"
            tv1.text = resultado
        }

Cuando ejecutamos el programa en el emulador tenemos como resultado:

control checkbox

Este proyecto lo puede descargar en un zip desde este enlace: proyecto004.zip