Qu’est-ce qu’un “bundle” dans une application Android

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

Les bundles sont généralement utilisés pour transmettre des données entre différentes activités Android. Le type de valeurs que vous voulez transmettre dépend de vous, mais les ensembles 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 transmises en procédant comme suit:

 Bundle extras = intent.getExtras(); Ssortingng tmp = extras.getSsortingng("myKey"); 

Vous pouvez trouver plus d’informations sur:

  • android-using-bundle-for-sharing-variables et

  • Passing-Bundles-Around-Activities

Je dois append que les groupes 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 lancée, 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é. Lorsque la première instance d’activité est créée, le bundle est nul; et si le bundle n’est pas nul, l’activité continue certaines activités démarrées par son prédécesseur.

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

L’anti-pattern le plus courant, cependant, suppose que onCreate() ne fait onCreate() . C’est faux, car il faut aussi restaurer l’état.

Il y a une option pour désactiver ce comportement de “recréer l’activité sur la 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 les documents.)

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


Votre premier créer un object Bundle

 Bundle b = new Bundle(); 

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

 b.putSsortingng("myname", anyssortingng); 

Maintenant, créez un object d’ Intent

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

Transmettre l’object bundle 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 de 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"

 Ssortingng s = b.getSsortingng("myname"); 

Un ensemble ressemble beaucoup à un object Java Map qui mappe les clés Ssortingng 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 de vieux objects Map , c’est que Map est trop flexible. il peut contenir des objects (tels que, par exemple, des stream d’E / S) qui ne peuvent pas être sérialisés. L’API Bundle restreint les types d’objects pouvant être ajoutés à un bundle de manière à garantir que le contenu de l’ensemble soit sérialisable. Le framework Android s’appuie sur cette propriété.

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.

Les bundles peuvent être utilisés pour envoyer des données arbitraires d’une activité à une autre par le biais des intentions. Lorsque vous diffusez une intention, les activités intéressées (et les autres diffuseurs de diffusion) en seront informées. Une intention peut contenir un ensemble afin que vous puissiez envoyer des données supplémentaires avec l’intention.

Les bundles sont des mappages de valeurs-clés, donc d’une certaine manière, ils ressemblent à un Hash, mais ils ne sont pas ssortingctement limités à un seul mappage d’objects Ssortingng / Foo. Notez que seuls certains types de données sont considérés comme “Parcelable” et qu’ils sont explicitement énoncés dans l’API Bundle.

Il suffit de créer un paquet,


 Bundle simple_bundle=new Bundle(); simple_bundle.putSsortingng("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.class”

Vous pouvez récupérer les éléments comme celui-ci.

 Intent receive_i=getIntent(); Bundle my_bundle_received=receive_i.getExtras(); my_bundle_received.get("item1"); Log.d("Value","--"+my_bundle_received.get("item1").toSsortingng); 

L’ensemble est utilisé pour transmettre des données entre les activités. Vous pouvez créer un ensemble, le transmettre à l’intention qui démarre l’activité qui peut être utilisée à partir de l’activité de destination.

Bundle: – Un mappage des valeurs Ssortingng vers différents types Parcelable.

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

quand on appelle onPause () alors onStop () puis dans l’ordre inverse onStop () à onPause ().

Les données sauvegardées que le système utilise pour restaurer l’état précédent sont appelées “état d’instance” et constituent un ensemble de paires clé-valeur stockées dans un object Bundle.

bundle est utilisé pour partager des données entre activités et pour enregistrer l’état de l’application dans la méthode oncreate () afin que l’application puisse savoir où elle a été arrêtée … J’espère que ça aide 🙂

utilisation des données d’envoi groupées d’une activité à une autre activité à l’aide d’un object intentionnel; Bundle contient les données qui peuvent être de n’importe quel type.

Maintenant, je vous dis comment créer des données de passage entre deux activités.

Étape 1: première activité

 Bundle b=new Bundle(); b.putSsortingng("mkv",anyssortingng); 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(); Ssortingng s=b.getSsortingng("mkv"); 

Je pense que cela est utile pour vous ………..

Le bundle ne consiste pas seulement à transférer des données entre deux composants différents, mais surtout à restaurer les valeurs stockées avant que l’activité ne soit détruite dans une nouvelle activité.

comme le texte dans un widget EditText ou la position de défilement d’un ListView .

Première activité:

 Ssortingng food = (Ssortingng)((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é:

 Ssortingng food = getIntent().getExtras().getSsortingng("food"); Boolean rb = getIntent().getExtras().getBoolean("rb");