Este es el segundo ejercicio con Android. Vamos a hacer una app que pida:
Y calcule el valor sin IVA, el IVA y el valor con IVA. El IVA es un impuesto del 16 % que se aplica al menos en México, supongo que en otros lugares puede variar.
Por cierto, los resultados deben mostrarse en una segunda actividad.
Puedes ver el código completo de la app en mi perfil.
Para comenzar vamos a poner dos EditText de tipo numérico en donde se va a escribir la cantidad de productos y el precio por cada uno.
También vamos a poner un botón para que cuando se haga click se pase a otra actividad en donde se muestran los resultados.
<?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:hint="Precio"
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:hint="Cantidad"
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="Ver total"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText2" />
</android.support.constraint.ConstraintLayout>
El primer EditText con id editText tendrá el precio, y el segundo con el id editText2 tendrá la cantidad de productos.
El único Button tiene el id button, este se encargará de pasar los datos a la otra actividad.
Para escuchar el click del botón, recuperar el precio y la cantidad de los productos vamos a programar un poco con Java.
Obtenemos referencias a los elementos de la vista y le ponemos un listener al botón; en el método onClick (sobrescrito) obtenemos el precio con la cantidad, calculamos el total bruto, iva y total neto.
Luego pasamos esos tres valores a la Actividad2 en donde simplemente los vamos a mostrar; para pasarlos usamos un Intent.
package me.parzibyte.ventaconiva;
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);
// Obtener referencia a los elementos
final EditText editTextPrecio = findViewById(R.id.editText),
editTextCantidad = findViewById(R.id.editText2);
Button botonQueCalcula = findViewById(R.id.button);
// Escuchar el click del botón
botonQueCalcula.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Obtener ambos valores como cadena
String precioString = editTextPrecio.getText().toString(),
cantidadString = editTextCantidad.getText().toString();
// Si están vacíos no seguimos ejecutando más código
if (precioString.isEmpty() || cantidadString.isEmpty()) return;
// Si el código continúa hasta aquí significa que las cosas van bien
// convertimos cadenas a double
double precio = Double.parseDouble(precioString),
cantidad = Double.parseDouble(cantidadString);
// Hora de hacer cálculos
final double IVA = 0.16;
double totalBruto = precio * cantidad;
// Calcular por separado el IVA de ese total bruto
double totalIva = totalBruto * IVA;
// Finalmente el total neto es la suma de los anteriores
double totalNeto = totalBruto + totalIva;
// Ahora creamos un intent y ponemos los 3 datos
Intent intent = new Intent(MainActivity.this, Actividad2.class);
intent.putExtra("totalBruto", totalBruto);
intent.putExtra("totalIva", totalIva);
intent.putExtra("totalNeto", totalNeto);
// Hacemos el cambio y nos vemos en Actividad2
startActivity(intent);
}
});
}
}
Todos los cálculos se hacen en esta actividad y los resultados se pasan a la siguiente.
En la segunda actividad tenemos 3 TextView que van a mostrar los 3 valores. El layout XML 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=".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:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:text="TextView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
</android.support.constraint.ConstraintLayout>
Los 3 elementos están dentro de un ConstraintLayout. Tiene el id textView1
, textView2
y textView3
.
En el código Java simplemente obtenemos la referencia a los elementos y les ponemos los valores que nos enviaron por el Intent.
Queda así:
package me.parzibyte.ventaconiva;
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 referencia
TextView textView1 = findViewById(R.id.textView),
textView2 = findViewById(R.id.textView2),
textView3 = findViewById(R.id.textView3);
// Recuperar valores
Intent intent = getIntent();
// El defaultValue es lo que se regresa si no se encuentra valor con la clave especificada
double totalBruto = intent.getDoubleExtra("totalBruto", 0);
double totalIva = intent.getDoubleExtra("totalIva", 0);
double totalNeto = intent.getDoubleExtra("totalNeto", 0);
// Ahora preparamos unos mensajes para ponerlos en los TextView
String mensajeTotalBruto = "Bruto: " + totalBruto;
String mensajeTotalIva = "IVA: " + totalIva;
String mensajeTotalNeto = "Neto: " + totalNeto;
// Finalmente le ponemos ese mensaje a cada TextView
textView1.setText(mensajeTotalBruto);
textView2.setText(mensajeTotalIva);
textView3.setText(mensajeTotalNeto);
}
}
Con eso terminamos por hoy.
En este post te quiero compartir mi experiencia tramitando un acta de nacimiento de México…
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
Esta web usa cookies.