Respuestas:
Los paquetes se usan generalmente para pasar datos entre varias actividades de Android. Depende de usted qué tipo de valores desea pasar, pero los paquetes pueden contener todo tipo de valores y pasarlos a la nueva actividad.
Puedes usarlo así:
Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);
startActivity(intent);
Puede obtener los valores pasados haciendo:
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
Puedes encontrar más información en:
Pase datos entre actividades utilizando Bundle
y Intent
objetos.
Tu primero crea un Bundle
objeto
Bundle b = new Bundle();
Luego, asocie los datos de cadena almacenados anystring
con la clave de paquete"myname"
b.putString("myname", anystring);
Ahora, crea un Intent
objeto
Intent in = new Intent(getApplicationContext(), secondActivity.class);
Pasar objeto de paquete b
a la intención
in.putExtras(b);
y comenzar la segunda actividad
startActivity(in);
En la segunda actividad, tenemos que acceder a los datos pasados de la primera actividad.
Intent in = getIntent();
Ahora, necesita obtener los datos del paquete
Bundle b = in.getExtras();
Finalmente, obtenga el valor de los datos de cadena asociados con la clave denominada "myname"
String s = b.getString("myname");
Tengo que agregar que los paquetes son utilizados por actividades para pasar datos a sí mismos en el futuro.
Cuando la pantalla gira, o cuando se inicia otra actividad, protected void onSaveInstanceState(Bundle outState)
se invoca el método y se destruye la actividad. Más tarde, se crea otra instancia de la actividad ypublic void onCreate(Bundle savedInstanceState)
se llama. Cuando se crea la primera instancia de actividad, el paquete es nulo; y si el paquete no es nulo, la actividad continúa algunos negocios iniciados por su predecesor.
Android guarda automáticamente el texto en los campos de texto, pero no guarda todo, y a veces aparecen errores sutiles.
Sin embargo, el antipatrón más común es asumir que onCreate()
solo hace la inicialización. Está mal, porque también debe restaurar el estado.
Hay una opción para deshabilitar este comportamiento de "recrear actividad en rotación", pero no evitará errores relacionados con el reinicio, solo los hará más difíciles de mencionar.
Tenga en cuenta también que el único método cuya llamada está garantizada cuando la actividad se va a destruir es onPause()
. (Consulte el gráfico del ciclo de vida de la actividad en los documentos).
A Bundle
es muy parecido a un Map
objeto Java que asigna String
claves a valores. Se utiliza para pasar información entre actividades y otros componentes de la aplicación. El marco también lo utiliza para capturar y restaurar información de estado.
La razón por la que Android no usa Map
objetos viejos para esto es que Map
es demasiado flexible; puede contener objetos (como, por ejemplo, flujos de E / S) que no se pueden serializar. La Bundle
API restringe los tipos de objetos que se pueden agregar a un paquete de tal manera que se garantiza que el contenido del paquete sea serializable. El marco de Android se basa en esta propiedad.
Le sugiero que lea la documentación sobre los fundamentos de la aplicación . Esto explica, entre otras cosas, qué son los paquetes y las intenciones y para qué se utilizan.
Los paquetes se pueden usar para enviar datos arbitrarios de una actividad a otra a través de Intentos. Cuando difunde una intención, las actividades interesadas (y otros BroadcastRecievers) recibirán una notificación al respecto. Una intención puede contener un paquete para que pueda enviar datos adicionales junto con la intención.
Los paquetes son asignaciones de valores clave, por lo que en cierto modo son como un Hash, pero no están estrictamente limitados a una sola asignación de objetos String / Foo. Tenga en cuenta que solo ciertos tipos de datos se consideran "Parcelable" y se especifican explícitamente en la API de paquete.
Solo crea un paquete,
Bundle simple_bundle=new Bundle();
simple_bundle.putString("item1","value1");
Intent i=new Intent(getApplicationContext(),this_is_the_next_class.class);
i.putExtras(simple_bundle);
startActivity(i);
EN el "this_is_the_next_class.class"
Puede recuperar los elementos como este.
Intent receive_i=getIntent();
Bundle my_bundle_received=receive_i.getExtras();
my_bundle_received.get("item1");
Log.d("Value","--"+my_bundle_received.get("item1").toString);
Paquete: - Una asignación de valores de cadena a varios tipos de paquetes.
Bundle se usa generalmente para pasar datos entre varias actividades de Android.
cuando llamamos a onPause () luego onStop () y luego en orden inverso onStop () a onPause ().
Los datos guardados que el sistema usa para restaurar el estado anterior se denominan "estado de instancia" y son una colección de pares clave-valor almacenados en un objeto Bundle.
el paquete se usa para compartir datos entre actividades y para guardar el estado de la aplicación en el método oncreate () para que la aplicación sepa dónde se detuvo ... Espero que ayude :)
uso de paquete de envío de datos de una actividad a otra actividad con la ayuda del objeto de intención; El paquete contiene los datos que pueden ser de cualquier tipo.
Ahora les digo cómo crear paquetes de datos de paso entre dos actividades.
Paso 1: en la primera actividad
Bundle b=new Bundle();
b.putString("mkv",anystring);
Intent in=new Intent(getApplicationContext(),secondActivity.class);
in.putExtras(b);
startActivity(in);
Paso 2: en la segunda actividad
Intent in=getIntent();
Bundle b=in.getExtras();
String s=b.getString("mkv");
Creo que esto es útil para ti ...........
Bundle no es solo para transferir datos entre dos componentes diferentes, sino más importante, se usa para restaurar los valores almacenados antes de que la actividad se destruya en una nueva actividad.
como el texto en un EditText
widget o la posición de desplazamiento de a ListView
.
Primera actividad:
String food = (String)((Spinner)findViewById(R.id.food)).getSelectedItem();
RadioButton rb = (RadioButton) findViewById(R.id.rb);
Intent i = new Intent(this,secondActivity.class);
i.putExtra("food",food);
i.putExtra("rb",rb.isChecked());
Segunda actividad:
String food = getIntent().getExtras().getString("food");
Boolean rb = getIntent().getExtras().getBoolean("rb");