Relación de Intención y Bundle

Mientras utilizamos el objeto Intent podemos poner diferentes tipos de datos directamente usando su putExtra() . También podemos poner estos datos adicionales en un objeto Bundle y agregarlos a Intent . Entonces, ¿por qué necesitamos Bundle si podemos hacerlo usando Intent directamente?

A veces necesitas pasar few variables o values a alguna otra Activity , pero ¿qué pasa si tienes un bunch of variable's or values que necesitas pasar a varias Activities . En ese caso, puede utilizar Bundle y pasar el Bundle a la Activity requerida con facilidad. En lugar de pasar una sola variable cada vez.

Como puede ver, el Intent almacena internamente en un Bundle .

 public Intent putExtra(String name, String value) { if (mExtras == null) { mExtras = new Bundle(); } mExtras.putString(name, value); return this; } 

Supongamos que necesita pasar un Bundle de una Activity a otra. Por eso Intent permite agregar Bundle s como campos adicionales.

EDIT : Por ejemplo, si desea pasar una fila de una base de datos junto con algunos otros datos es muy conveniente para poner esta fila en un Bundle y agregar este Bundle a la Intent como un campo extra.

Supongo que lo que @Lalit significa es suponer que su actividad siempre transmite las mismas variables a diferentes intentos, puede almacenarlas todas en un solo Bundle de su clase y simplemente usar intent.putExtras(mBundle) siempre 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 vuelven obsoletos en su código, por ejemplo. Me gusta:

 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 ya se ha dicho, Intent almacena los parámetros en un Bundle interno, y vale la pena notar que cuando se llama a putExtras , el paquete Intent interno no apunta al mismo objeto, sino que crea una copia de todas las variables en su lugar, usando un simple for así:

 for (int i=0; i<array.mSize; i++) { put(array.keyAt(i), array.valueAt(i)); } 
  • ¿qué intentos o apis tiene la aplicación Duo de Google para Android?
  • El tipo de archivo asociado con la aplicación android falla
  • ¿Cómo funcionan internamente los intentos?
  • Abrir foro en Tapatalk vía Intent
  • ¿Existen intentos de Android para agregar datos a Google?
  • ¿Cómo podemos utilizar startActivityforResult () para la intención de correo electrónico?
  • ¿Hay alguna manera de consultar un tipo específico de filtros de intención aplicaciones capaces?
  • ¿Buscando intentos de búsqueda en el mercado?
  • Propósito de envoltura en LabeledIntent para fines de visualización
  • Intención de actividad en Side-Menu.Android de diseño de material
  • Ventana ya enfocada - ignorando la ganancia de enfoque de com.android.internal.view
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.