En Android, un Bundle es un contenedor de datos que se utiliza para almacenar y
transferir información entre diferentes componentes, como actividades, fragmentos,
intents, y más. Es similar a un mapa de clave-valor, donde las claves son cadenas
(String) y los valores pueden ser varios tipos de datos compatibles con el sistema.
Principales usos del Bundle:
1. Transferir datos entre actividades:
o Al iniciar una nueva actividad con un Intent, puedes usar un Bundle
para incluir datos que la nueva actividad necesitará.
2. Guardar y restaurar el estado:
o En eventos como cambios de configuración (rotación de pantalla) o
cuando el sistema destruye y recrea una actividad, se utiliza un Bundle
para guardar y restaurar el estado.
3. Comunicación entre fragmentos:
o Puedes usar un Bundle para enviar datos a un fragmento al momento de
crearlo o al interactuar con él.
4. Transferir datos en notificaciones:
o Las notificaciones a menudo usan Bundles para agregar datos
adicionales que se procesan al hacer clic.
Métodos principales del Bundle:
1. Para agregar datos:
java
Copiar código
Bundle bundle = new Bundle();
[Link]("clave", "valor");
[Link]("edad", 25);
2. Para recuperar datos:
java
Copiar código
String valor = [Link]("clave");
int edad = [Link]("edad");
3. Otros métodos comunes:
o putBoolean(String key, boolean value)
o putFloat(String key, float value)
o putParcelable(String key, Parcelable value)
o putSerializable(String key, Serializable value)
Ejemplos de uso:
1. Pasar datos entre actividades:
En la actividad actual:
java
Copiar código
Intent intent = new Intent(this, [Link]);
Bundle bundle = new Bundle();
[Link]("nombre", "Juan");
[Link]("edad", 30);
[Link](bundle); // Adjunta el Bundle al Intent
startActivity(intent);
En la nueva actividad:
java
Copiar código
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_segunda);
Bundle bundle = getIntent().getExtras(); // Recupera el Bundle
if (bundle != null) {
String nombre = [Link]("nombre");
int edad = [Link]("edad");
TextView textView = findViewById([Link]);
[Link]("Nombre: " + nombre + ", Edad: " + edad);
}
}
2. Guardar y restaurar estado:
Al guardar el estado de una actividad:
java
Copiar código
@Override
protected void onSaveInstanceState(Bundle outState) {
[Link](outState);
[Link]("texto", "Hola mundo");
}
Al restaurarlo:
java
Copiar código
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
[Link](savedInstanceState);
String texto = [Link]("texto");
}
Ventajas del Bundle:
1. Ligero y fácil de usar: Compatible con tipos de datos simples y estructuras más
complejas como objetos Parcelable.
2. Compatibilidad entre componentes: Es una forma estándar de transferir datos
en Android.
3. Seguro y controlado: El sistema Android asegura que los datos se empaqueten
y desempacoten correctamente.
En resumen, el Bundle es una herramienta esencial para manejar datos entre los
diversos componentes de una aplicación Android, manteniendo la comunicación
ordenada y eficiente.