Tabla de contenido
Me han preguntado el otro día como realizar el control de datos introducidos en una APP para Android. He de reconocer que mi fuerte son las aplicaciones web, pero creo que en el ejemplo que a continuación voy a mostrar quedará claro como realizar estos controles ( de una manera básica ). El objetivo que busco lo realizaré utilizando CheckBox para seleccionar las operaciones en esta pequeña calculadora de sumas y restas que vamos a realizar.
Al realizar la carga de dos números en controles de tipo EditText («Number») mostraremos un mensaje que solicite la carga de los valores. También dispondremos de dos controles de tipo CheckBox para seleccionar si queremos sumar y/o restar dichos valores (pudiendo realizar las dos operaciones a la vez). Finalmente mediante un control de tipo Button efectuamos la operación respectiva. El o los resultados obtenidos serán mostrados en un TextView («Medium Text»).
Calculadora para sumas y restas
En caso de que no se seleccione ninguna de las operaciones mostraremos un mensaje en el lugar donde debería mostrarse el resultado avisando de ello. También mostraremos un mensaje en el mismo campo en el caso de que el primer o segundo número queden sin ser cubiertos.
Cuando terminemos de montar la estructura, hay que recordar el no olvidarse inicializar la propiedad onClick del objeto button con el valor «operar» (es el nombre del método a ejecutarse cuando se presione el botón y lo implementa la clase que hacemos).
Activicty main.xml
Para los que no se enteren con el «creador de interfaces» que nos proporciona Android Studio, voy a dejar a continuación el código xml del activity_mail.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="ar.com.entreunosyceros.sumaryrestas.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Escribe el primer valor" android:id="@+id/tv1" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" android:ems="10" android:id="@+id/et1" android:layout_below="@+id/tv1" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Escribe el segundo valor" android:id="@+id/tv2" android:layout_below="@+id/et1" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number" android:ems="10" android:id="@+id/et2" android:layout_below="@+id/tv2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sumar" android:id="@+id/checkBox" android:layout_below="@+id/et2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Restar" android:id="@+id/checkBox2" android:layout_below="@+id/checkBox" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Operar" android:id="@+id/button" android:layout_below="@+id/checkBox2" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:onClick="operar" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Aquí se verá el resultado" android:id="@+id/tv3" android:layout_below="@+id/button" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <GridLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/button" android:layout_alignRight="@+id/tv2" android:layout_alignEnd="@+id/tv2"></GridLayout> </RelativeLayout>
Y bueno, con esto habremos creado la estructura de la APP que estamos desarrollando.
MainActivity.Java
Ahora es el turno del turrón del asunto, el MainActivity.java. En el se desarrollarán las operaciones y el control de errores de nuestra aplicación. El código sería el siguiente:
package ar.com.entreunosyceros.sumasyrestas; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { //definición private EditText et1,et2; private TextView tv3; //Definimos dos objetos de la clase CheckBox como atributos de la clase private CheckBox checkBox1,checkBox2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //obtener los números et1=(EditText)findViewById(R.id.et1); et2=(EditText)findViewById(R.id.et2); //resultado o mensajes tv3=(TextView)findViewById(R.id.tv3); //En el método onCreate los inicializamos con los objetos definidos en el archivo XML checkBox1=(CheckBox)findViewById(R.id.checkBox); checkBox2=(CheckBox)findViewById(R.id.checkBox2); } //Este método se ejecutará cuando se presione el botón public void operar(View view) { String valor1=et1.getText().toString(); String valor2=et2.getText().toString(); //variable para mostrar el resultado String resu = ""; //comprobamos si alguno de los números están vacíos if ( valor1.isEmpty() || valor2.isEmpty()){ resu = "Error. Alguno de los números están vacíos"; tv3.setText(resu); }else { //pasamos los números de String a Integer int nro1 = Integer.parseInt(valor1); int nro2 = Integer.parseInt(valor2); try { //comprobamos que se ha seleccionado alguna de las operaciones a realizar if (checkBox1.isChecked() == false && checkBox2.isChecked() == false) { resu = "No se ha seleccionado ninguna operación"; }else { if (checkBox1.isChecked() == true) { int suma = nro1 + nro2; resu = "La suma de " + nro1 + " y de " + nro2 + " es: " + suma + "\n"; } if (checkBox2.isChecked() == true) { int resta = nro1 - nro2; resu = resu + "La resta es: " + resta; } } //mostramos el resultado tv3.setText(resu); } catch (Exception e) { //en caso de error se muestra la exception System.out.println("Error!! Exception: " + e); } } } }
Probando la calculadora
Cuando ejecutamos el programa en el emulador que nos proporciona Android Studio, podemos ver algo como lo que sigue:
Evidentemente los colores y esas cosas serán al gusto de cada uno. En caso de que no se seleccione ninguna operación a realizar, nuestra APP nos mostrará un mensaje como el que se ve en la siguiente captura.
Y como ya he comentado antes, en caso de no cubrir alguno de los números la aplicación nos mostrará también un mensaje avisándonos de ello, como se muestra en la próxima captura.
Como se puede ver en las capturas, y en caso de que alguien quiera compilar la aplicación en local, esta funciona perfectamente. Próximamente más …
2 Comentarios
Hola
Necesito el código de la calculadora completa gracias…
Hola. Juraría que con el código que aparece en el post, la calculadora funciona. Pero asegúrate de construir adecuadamente la estructura del proyecto.
Si a pesar de utilizar el código (tal cual) y tener correcta la estructura del proyecto no consigues que funcione, envíame los errores por correo y vemos si falta algo en el artículo o en tu proyecto.
Salu2 y gracias por el comentario.