277 votes

Qu'est-ce qu'un "bundle" dans une application Android

Qu'est-ce qu'un bundle dans une application Android? Quand l'utiliser?

276voto

samtherock Points 808

Bundle est généralement utilisé pour transmettre des données entre les différentes Activités de android. Il dépend de vous de quel type de valeurs que vous souhaitez passer, mais bundle peut contenir tous les types de valeurs et de passer à la nouvelle activité.

Vous pouvez l'utiliser comme .....

Intent intent = new
Intent(getApplicationContext(),SecondActivity.class);
intent.putExtra("myKey",AnyValue);  
startActivity(intent);

Maintenant, vous pouvez obtenir les valeurs passées en...

Bundle extras = intent.getExtras(); 
String tmp = extras.getString("myKey");

vous pouvez également trouver plus d'informations sur android-aide-bundle-de-partage-des variableset Au Passage Des Faisceaux-Autour-Des Activités

76voto

mahalakshmi Points 121

Passer des données entre les activités en utilisant Bundle et Intent objets.

Créer faisceau de l'objet:

Bundle b=new Bundle();

Associé à la chaîne de données stockées en anystring avec bundle clé "myname":

b.putString("myname",anystring);

Créer de l'intention de l'objet:

Intent in=new Intent(getApplicationContext(),secondActivity.class);

Passer bundle objet d'une intention:

in.putExtras(b);

Le début de la deuxième activité:

startActivity(in);

Dans la deuxième activité, nous avons accès aux données transmises à partir de la première activité:

Intent in=getIntent();

Prendre les données de faisceau:

Bundle b=in.getExtras();

Obtenir la valeur de la chaîne de données associées à clé nommée "monnom":

String s = b.getString("myname");

67voto

Je dois ajouter que les faisceaux sont utilisés par les activités de transmettre des données à eux-mêmes dans l'avenir.

Lorsque l'écran pivote, ou lorsqu'une autre activité est commencé, la méthode protected void onSaveInstanceState(Bundle outState) est invoqué, et l'activité est détruite. Plus tard, une autre instance de l'activité est créée, et public void onCreate(Bundle savedInstanceState) est appelé. Lorsque la première instance de l'activité est créée, le bundle est nulle; et si le groupe n'est pas nulle, l'activité continue de certaines entreprises a commencé par son prédécesseur.

Android enregistre automatiquement le texte dans les champs de texte, mais il ne sauve pas tout, et les bogues subtils apparaissent parfois.

Les plus courants anti-modèle, cependant, c'est en supposant qu' onCreate() ne vient de l'initialisation. C'est faux, car il faut aussi restaurer l'état.

Il y a une option pour désactiver cette "re-créer de l'activité sur la rotation d'un comportement, mais ça n'empêchera pas de redémarrer les bugs liés à la, il sera juste plus difficile à mentionner.

Notez également que la seule méthode dont l'appel est garanti lorsque l'activité va être détruit est - onPause(). (Voir l'activité du cycle de vie du graphe de la documentation.)

47voto

Ted Hopp Points 122617

Je vous suggère de lire la documentation sur les principes fondamentaux de l'application . Cela explique, entre autres, quels sont les paquets et les intentions et à quoi ils servent.

14voto

scriptocalypse Points 3175

Les lots peuvent être utilisés pour envoyer des données arbitraires d'une activité à une autre par le biais de ses Intentions. Lorsque vous diffusez une Intention, intéressés Activités (et d'autres BroadcastRecievers) en sera avisé. L'intention peut contenir un paquet de sorte que vous pouvez envoyer des données supplémentaires avec l'Intention.

Les Bundles sont à la clé-valeur mappages, dans un sens, ils sont comme une table de Hachage, mais ils ne sont pas strictement limitée à une seule Chaîne / Foo objet de la cartographie. Notez que seuls certains types de données sont considérés comme des "Parcelable" et ils sont explicitement énoncée dans le Bundle de l'API.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X