Qu'est-ce qu'un bundle
dans une application Android? Quand l'utiliser?
Qu'est-ce qu'un bundle
dans une application Android? Quand l'utiliser?
Réponses:
Les bundles sont généralement utilisés pour transmettre des données entre diverses activités Android. Cela dépend du type de valeurs que vous souhaitez transmettre, 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 faisant:
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
Vous pouvez trouver plus d'informations sur:
Passez des données entre les activités à l'aide de Bundle
et d' Intent
objets.
Votre premier créer un Bundle
objet
Bundle b = new Bundle();
Ensuite, associez les données de chaîne stockées dans anystring
avec la clé de l'ensemble"myname"
b.putString("myname", anystring);
Maintenant, créez un Intent
objet
Intent in = new Intent(getApplicationContext(), secondActivity.class);
Passer l'objet 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 depuis 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");
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é démarre, 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)
appelée. Lorsque la première instance d'activité est créée, le bundle est nul; et si le bundle n'est pas nul, l'activité poursuit une activité démarrée par son prédécesseur.
Android enregistre automatiquement le texte dans les champs de texte, mais il ne sauvegarde pas tout, et des bugs subtils apparaissent parfois.
L'anti-modèle le plus courant, cependant, suppose que cela onCreate()
ne fait que l'initialisation. C'est faux, car il faut aussi restaurer l'état.
Il existe une option pour désactiver ce comportement "recréer une activité lors de la rotation", mais cela n'empêchera pas les bogues liés au redémarrage, cela les rendra 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 des activités dans les documents.)
A Bundle
ressemble beaucoup à un Map
objet Java qui mappe les String
clés aux valeurs. Il est utilisé pour transmettre des informations entre les activités et d'autres composants d'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 Map
objets simples est que Map
c'est trop flexible; il peut contenir des objets (comme, par exemple, des flux d'E / S) qui ne peuvent pas être sérialisés. L' Bundle
API restreint les types d'objets qui peuvent être ajoutés à un bundle de telle sorte que le contenu du bundle est garanti pour être sérialisable. Le cadre Android repose sur cette propriété.
Je vous suggère de lire la documentation sur les principes fondamentaux de l'application . Cela explique, entre autres, ce que sont les bundles 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 d'intentions. Lorsque vous diffusez une Intention, les Activités intéressées (et les autres BroadcastRecievers) en seront informés. 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 en quelque sorte ils sont comme un hachage, mais ils ne sont pas strictement limités à un seul mappage d'objets String / Foo. Notez que seuls certains types de données sont considérés comme "parcelables" et ils sont explicitement énoncés dans l'API Bundle.
Créez simplement 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 "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").toString);
Bundle: - Un mappage des valeurs de chaîne à différents types de parcelles.
Le 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 () à 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.
le bundle 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 :)
utilisation de l'envoi groupé de données d'une activité à une autre à l'aide d'un objet intentionnel; Le bundle contient les données qui peuvent être de tout type.
Maintenant, je dis que comment créer un paquet 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 cela vous est utile ...........
Le bundle ne sert pas uniquement à transférer des données entre deux composants différents, mais il est surtout utilisé pour restaurer les valeurs stockées avant que l'activité ne soit détruite dans une nouvelle activité.
comme le texte d'un EditText
widget ou la position de défilement d'un fichier ListView
.
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");