Qu'est ce qu'un "bundle" dans une application Android
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:
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.)
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");
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.
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.
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);
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.
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.
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 :)
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...........
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
.
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");