Al utilizar el objeto de intención podemos poner diferentes tipos de datos directamente usando su putExtra()
. También podemos poner estos datos adicionales en un objeto Bundle
y agregarlo al Intent
. Entonces, ¿por qué necesitamos Bundle
si podemos hacerlo usando Intent
directamente?Relación de intención y paquete
Respuesta
A veces se necesita pasar sólo few variables
values
o con algún otro Activity
, pero lo que si usted tiene un bunch of variable's or values
que necesita pasar a varios Activities
. En ese caso, puede usar Bundle
y pasar el Bundle
al Activity
requerido con facilidad. En lugar de pasar una sola variable cada vez.
Supongamos que necesita pasar un Bundle
de un Activity
a otro. Es por eso que Intent
le permite agregar Bundle
s como campos adicionales.
EDITAR: Por ejemplo, si desea pasar una fila de una base de datos junto con algunos otros datos que es muy conveniente para poner esto en una fila Bundle
y añadir esta Bundle
a la Intent
como un campo adicional.
¿Me pregunto por qué? vamos a poner los mismos datos adicionales en paquete y agregar ese paquete en el objeto de intención. Que podemos poner directamente en el objeto de intento. ¿No es así? –
No, no lo es. Usted puede simplemente tener un 'Bundle' que necesita pasar. ¿De verdad quieres copiarlo campo por campo al 'Intento'. ¿Y si las teclas del 'Bundle' y' Intent' se superponen? No puede saber todas las cosas que hace la gente, solo recuerde que puede poner un 'Bundle' en' Intent' y cuando lo necesite sabrá qué hacer. – Michael
Un pequeño ejemplo: desea pasar una fila desde una base de datos junto con algunos otros datos. Es muy conveniente almacenar esta fila en un 'Bundle'. En una de mis aplicaciones utilizo una lista de 'Bundle's para pasar varias filas de una base de datos. – Michael
Como puede ver, el Intent
lo almacena internamente en un Bundle
.
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
Creo que lo que significa es @Lalit suponiendo su actividad pasa siempre las mismas variables a diferentes intenciones, puede almacenar todos ellos en un solo Bundle
en su clase y sólo tiene que utilizar intent.putExtras(mBundle)
cada vez que necesite el mismo conjunto de parámetros.
Eso haría más fácil cambiar el código si uno de los parámetros se vuelve obsoleto en su código, por ejemplo. Al igual que:
public class MyActivity {
private Bundle mBundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
mBundle = new Bundle();
mBundle.putString("parameter1", value1);
mBundle.putString("parameter2", value2);
}
private void openFirstActivity() {
Intent intent = new Intent(this, FirstActivity.class);
intent.putExtras(mBundle);
startActivity(intent);
}
private void openSecondActivity() {
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtras(mBundle);
startActivity(intent);
}
}
OBS: Como se ha dicho ya, Intent
almacena los parámetros de un interno Bundle
, y vale la pena señalar que cuando se llama a putExtras
, el haz de Intención interna no apuntan al mismo objeto, pero crea una copia de todas las variables en su lugar, usando un simple for
como este:
for (int i=0; i<array.mSize; i++) {
put(array.keyAt(i), array.valueAt(i));
}
- 1. Relación entre el identificador de paquete en Info.plist y App ID y iTunes Connect
- 2. Relación entre AppDelegate y main.m
- 3. Identificador de paquete y perfil de aprovisionamiento
- 4. intención Fortran (inout) versus omitiendo intención
- 5. ¿Relación OpenMP y NUMA?
- 6. Servicio de Android: onBind (Intención) y onUnbind (Intención) se llama solo una vez
- 7. ¿Cuál es el concepto de intención pendiente? ¿Por qué y cuándo usamos intención pendiente?
- 8. Android - ¿Filtro de intención?
- 9. ¿Cómo determinar el tipo de un extra en un paquete mantenido por intención?
- 10. Android: Mensaje de intención
- 11. android- calling Intención de una clase interna
- 12. Relación entre GEF y GMF?
- 13. Relación y validación ViewModel/View
- 14. Relación entre C y C++
- 15. relación entre log4j y apache.commons.logging
- 16. Relación entre HttpContext.Request.Cookies y HttpContext.Response.Cookies
- 17. Filtro de intención para iniciador y actividad de envío
- 18. paquete de instalación y RVM
- 19. Dispositivo OpenAL, búfer y relación de contexto
- 20. Android: Comprensión intención de Filtros
- 21. Intención de obtener varias imágenes
- 22. Android recoger la intención
- 23. Android Descargar Intención
- 24. Android-receptor de la emisión y filtro Intención
- 25. Múltiples instancias de intención pendiente
- 26. URI de intención estándar roto?
- 27. Cuál es la diferencia entre instalación de paquete --deployment y paquete de paquete
- 28. Paquete de rieles: ¿cómo deshacer paquete paquete?
- 29. Transmitir en paquete, paquete en WordDocument y luego nuevamente
- 30. ¿Por qué los documentos de Android dicen que los extras de intención necesitan el prefijo de paquete
Lo siento pero esto es incorrecto, verifique mi respuesta para saber por qué. – Reno
'mExtras = new Bundle();' ¿no es esto lo suficientemente convincente? Si no, vaya a verificar el código fuente de 'Intent.java' usted mismo. – Reno