Android

Ejercicio en Android: sumar dos números y mostrar resultado en otra Activity

En este post vamos a ver un ejercicio con Android que suma dos números (obtenidos de dos EditText) y muestra la suma en otra actividad, cambiando a través de un Intent.

Suma de dos números en Android

Debido a que es un ejercicio para principiantes no vamos a ver buenas prácticas.

Repositorio en GitHub

Puedes ver el código completo de la app en mi perfil.

Diseñar layout de actividad principal

El layout es un ConstraintLayout, por el momento no importa mucho su diseño mientras tenga:

  • 2 EditText de tipo numérico (para que acepte números)
  • 1 Button, que será el encargado de sumar los números y llamar a la actividad

Así que queda así:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:inputType="numberSigned"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:ems="10"
        android:inputType="numberSigned"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:text="Sumar"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText2" />
</android.support.constraint.ConstraintLayout>

El primer EditText tiene el id editText, y el segundo editText2. El Button tiene el id button.

Es importante saber el id que tiene cada Widget porque después los vamos a recuperar en la vista.

Código Java de la actividad principal

Ahora veamos lo que controla la vista. Vamos a declarar las variables de los elementos y agregar un listener al botón para cuando se hace click sobre el mismo.

Dentro del listener sobrescribimos el método onClick y ponemos toda la lógica: obtener el texto, convertirlo a entero y sumarlo. Luego pasarlo a la otra actividad.

package me.parzibyte.sumarnmeros;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Recuperar Widgets de XML, no es obligatorio que tengan el mismo nombre
        // pero es una buena práctica (y eso que dije que no veríamos buenas prácticas)
        final EditText editText = findViewById(R.id.editText),
                editText2 = findViewById(R.id.editText2);
        Button button = findViewById(R.id.button);
        // Ahora agregamos un listener al botón para saber cuando le den click
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Recuperamos los valores como String
                String numero1String = editText.getText().toString(),
                        numero2String = editText2.getText().toString();
                // Simple validación, si quieres ver una más bonita visita:
                // https://parzibyte.me/blog/2019/02/25/validar-edittext-android-seterror-tooltip/

                // Si las cadenas están vacías...
                if (numero1String.equals("") || numero2String.equals("")) {
                    // Detener ejecución del método
                    return;
                }

                // Si el método no se detuvo...
                // Convertir esas String a números Int, porque no podemos sumar cadenas
                int numero1 = Integer.parseInt(numero1String),
                        numero2 = Integer.parseInt(numero2String);
                // Hacer la suma
                int suma = numero1 + numero2;
                // Crear un Intent para cambiar
                // Nota: al momento Actividad2 no está creada, ahorita la creamos
                Intent intent = new Intent(MainActivity.this, Actividad2.class);
                // Agregarle los datos que le pasamos
                // Nota: "suma" es la clave con la que lo vamos a obtener "del otro lado"
                intent.putExtra("suma", suma);

                // Y ahora que ya tiene datos, cambiamos de actividad
                // Nos vemos en Actividad2.java
                startActivity(intent);
            }
        });
    }
}

Todo se hace dentro del método onCreate, que es un método del ciclo de vida de las apps de Android.

Para cambiar usamos Intent como lo dije anteriormente. Para convertir una cadena a entero usamos Integer.parseInt, y para pasar la suma usamos putExtra que recibe una clave y un valor.

La clave la vamos a usar para recuperar ese mismo valor en la otra actividad llamada Actividad2.

El diseño de la segunda actividad

En la segunda actividad solamente hay un TextView con id textView. Está dentro de un ConstraintLayout y el código es el siguiente:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Actividad2">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:text="TextView"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

Código Java de la segunda ctividad: recibir Intent y datos

El texto se lo vamos a poner desde Java en la Actividad llamada Actividad2 (que es a la que cambiamos desde la MainActivity) cuyo código es el siguiente:

package me.parzibyte.sumarnmeros;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class Actividad2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_actividad2);

        // Obtener los datos que nos pasaron. El 0 es por si no se nos pasara
        // nada, ya que se necesita un valor por defecto (defaultValue)
        Intent intent = getIntent();
        int sumaQueNosPasaron = intent.getIntExtra("suma", 0);

        // Obtener Widget de vista
        TextView textView = findViewById(R.id.textView);

        // Armar un mensaje
        String mensaje = "La suma es: " + sumaQueNosPasaron;
        // Y ponerle la suma
        textView.setText(mensaje);
    }
}

Básicamente es llamar a setText en el TextView con el resultado que nos pasaron.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Tramitar acta de nacimiento en línea de manera instantánea

En este post te quiero compartir mi experiencia tramitando un acta de nacimiento de México…

4 horas hace

Creador de credenciales web – Aplicación gratuita

Hoy te voy a presentar un creador de credenciales que acabo de programar y que…

2 semanas hace

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

2 semanas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

2 semanas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

2 semanas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

2 semanas hace

Esta web usa cookies.