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

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

238
demandé sur Fllo 2011-02-15 07:49:56

12 réponses

Bundles sont généralement utilisés pour passer des données entre diverses activités Android. Cela dépend de vous quel type de valeurs vous voulez transmettre, mais les bundles peuvent contenir tous les types de valeurs et les transmettre à la nouvelle activité.

Vous pouvez l'utiliser comme ceci:

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

Vous pouvez obtenir les valeurs passées en faisant:

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

Vous pouvez trouver plus d'informations sur:

245
répondu samtherock 2016-08-08 21:27:14

Je dois ajouter que les bundles sont utilisés par les activités pour se transmettre des données à l'avenir.

Lorsque l'écran pivote, ou lorsqu'une autre activité est commencé, la méthode protected void onSaveInstanceState(Bundle outState) est appelée, 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ée. Lorsque la première instance d'activity est créée, le bundle est null; et si le bundle n'est pas null, l'activité continue une activité démarrée 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.

L'anti-motif le plus commun, cependant, suppose que onCreate() ne fait que l'initialisation. C'est faux, car il faut aussi restaurer l'état.

Il y a une option pour désactiver ce comportement "recréer l'activité en rotation", mais cela n'empêchera pas les bogues liés au redémarrage, cela les rendra simplement plus difficiles à mentionner.

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

63
répondu 18446744073709551615 2012-05-31 12:24:38

Transmettre des données entre les activités à l'aide des objets Bundle et Intent.


Votre premier créer un Bundle objet

Bundle b = new Bundle();

Ensuite, associez les données de chaîne stockées dans anystring à la clé de regroupement "myname"

b.putString("myname", anystring);

Maintenant, créez un objet Intent

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

Passer bundle objet b à l'intention

in.putExtras(b);

Et commencer la deuxième activité

startActivity(in);

Dans la deuxième activité, nous devons accéder aux données transmises par la première activité

Intent in = getIntent();

Maintenant, vous devez obtenir les données du bundle

Bundle b = in.getExtras();

Enfin, obtenez la valeur des données de chaîne associées à la clé nommée "myname"

String s = b.getString("myname");
57
répondu mahalakshmi 2015-06-20 23:43:27

Un Bundle ressemble beaucoup à un objet Java Map qui mappe les clés String aux valeurs. Il est utilisé pour transmettre des informations entre les activités et les autres composants de l'application. Il est également utilisé par le framework pour capturer et restaurer les informations d'état.

La raison pour laquelle Android n'utilise pas d'anciens objets Map pour cela est que Map est trop flexible; il peut contenir des objets (tels que, disons, des flux d'E/S) qui ne peuvent pas être sérialisés. L'API Bundle limite les types d'objets pouvant être ajoutés à bundle de telle sorte que le contenu du bundle soit garanti sérialisable. Le framework Android repose sur cette propriété.

, je vous suggère de lire la documentation sur Application des Fondamentaux. Ceci explique, entre autres choses, ce que sont les paquets et les intentions et à quoi ils sont utilisés.

31
répondu Ted Hopp 2016-12-20 21:38:39

Les faisceaux peuvent être utilisés pour envoyer des données arbitraires d'une activité à une autre par intention. Lorsque vous diffusez une intention, les activités intéressées (et les autres diffuseurs) en seront informées. Une intention peut contenir un Bundle afin que vous puissiez envoyer des données supplémentaires avec L'intention.

Les Bundles sont des mappages clé-valeur, donc d'une certaine manière ils sont comme un hachage, mais ils ne sont pas strictement limités à un seul mappage D'objet String / Foo. Notez que seuls certains types de données sont pris en compte "Parcelable" et ils sont explicitement énoncés dans L'API Bundle.

14
répondu scriptocalypse 2011-02-15 04:57:20

Il suffit de créer un bundle,


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);

Dans la " this_is_the_next_class.la classe"

Vous pouvez récupérer les éléments comme ceci.

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);
7
répondu Bala Prasanna 2014-02-12 04:52:55

Faisceau est utilisé pour transmettre des données entre les Activités. Vous pouvez créer un bundle, le transmettre à Intent qui démarre l'activité qui peut ensuite être utilisée à partir de l'activité de destination.

5
répondu GSree 2011-02-15 04:55:08

Bundle:- Un mappage de valeurs de chaîne à différents types Parcelable.

Bundle est généralement utilisé pour transmettre des données entre diverses activités d'android.

Lorsque nous appelons onPause() puis onStop (), puis dans l'ordre inverse onStop() pour onPause().

Les données enregistrées que le système utilise pour restaurer l'état précédent sont appelées "état d'instance" et sont une collection de paires clé-valeur stockées dans un objet Bundle.

3
répondu Ahmed Ali 2015-08-16 17:26:38

Faisceau est utilisé pour partager des données entre les activités , et pour enregistrer l'état de l'application dans la méthode oncreate() afin que l'application sache où elle a été arrêtée ... J'espère que cela aide :)

2
répondu Sandip Lawate 2013-07-29 10:52:32

Utilisation de bundle envoyer des données d'une activité à une autre activité à l'aide de l'objet intent; Bundle contient les données qui peuvent être de n'importe quel type.

Maintenant, je dis que comment créer un bundle en passant des données entre deux activités.

Étape 1: sur la première activité

Bundle b=new Bundle();

b.putString("mkv",anystring);

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

in.putExtras(b);

startActivity(in);

Étape 2: Sur La Deuxième Activité

Intent in=getIntent();

Bundle b=in.getExtras();

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

Je pense que c'est utile pour vous...........

0
répondu Mahendra Kumar Verma 2015-04-09 10:38:16

Bundle n'est pas seulement pour transférer des données entre deux composants différents, mais plus important encore, il est utilisé pour restaurer les valeurs stockées avant que l'activité ne soit détruite en nouvelle activité.

Comme le texte d'un widget EditText ou la position de défilement d'un ListView.

0
répondu Ajay Takur 2015-06-18 15:36:22

Première activité:

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());

Deuxième activité:

String food = getIntent().getExtras().getString("food");
Boolean rb = getIntent().getExtras().getBoolean("rb");
0
répondu Cooper 2016-12-21 21:26:58