2010-10-20 6 views

Répondre

0

Pour répondre à votre question - que vous pourriez avoir facilement trouvé la réponse par la recherche stackoverflow - si vous devez passer un ArrayList que vous pouvez faire comme ceci:

ArrayList<String> list = new ArrayList<String>(); 
list.add("hello"); 

Bundle b = new Bundle(); 
b.putSerializable("myList", list); 

Intent myIntent = new Intent(this, ActivityB.class); 
myIntent.putExtras(b); 
startActivity(myIntent); 

Et ActivityB:

Intent myIntent = this.getIntent(); 
ArrayList<String> list = (ArrayList<String>) myIntent.getSerializableExtra("myList"); 
+0

merci un lotttttt –

0

Vous ne pouvez probablement pas y accéder directement. Habituellement, seulement 1 activité peut être au premier plan. Essayer d'accéder à des éléments dans une activité en arrière-plan (comme vous liste dans A de l'acitve B) est un mauvais choix de conception.

Je pense que vous avez besoin de stocker les données de ces listes dans un emplacement commun:

  • les faire parcelable et de les stocker en vous les préférences de votre application
  • les stocker dans un SQLite db
  • les transmettre Pour l'activité B via l'intention de départ

De plus, peut-être vous n'avez pas besoin de passer toutes les listes à B, peut-être que vous n'avez besoin que d'une partie d'entre elles, considérez cela aussi.

+0

Si j'ai besoin de passer une partie des données à B alors ça peut être fait ??? –

+0

Vous devez les mettre en tant que données supplémentaires. Instanciez un nouvel objet Intent, puis utilisez putInt(), putString(), etc. pour cela. Utilisez ensuite cet instant pour lancer l'activité B. –

0
* make them parcelable and store them in you app's preferences 
* store them in a SQLite db 
* pass them to Activity B via the starting Intent 

Il est faux. Wrong je veux dire dans un sens que pas besoin de stocker l'objet Parcelable dans le stockage persistant, puisque dès que vous faites l'objet Parcelable - une autre activité peut accéder à l'objet sans sérialisation (d'ailleurs la sérialisation n'est pas recommandée). Android docs read:

Conteneur pour un message (données et références d'objet) pouvant être envoyé via un IBinder. Une parcelle peut contenir à la fois des données aplaties non flattées de l'autre côté de l'IPC (en utilisant les différentes méthodes ici pour écrire des types spécifiques, ou l'interface Parcelable générale), et des références à des objets IBinder vivants qui aboutiront à l'autre côté un proxy IBinder connecté avec l'IBinder d'origine dans le colis.

La parcelle n'est pas un mécanisme de sérialisation à usage général. Cette classe (et l'API Parcelable correspondante pour placer des objets arbitraires dans une parcelle) est conçue comme un transport IPC haute performance. En tant que tel, il n'est pas approprié de placer des données de parcelle dans un stockage persistant: des modifications dans l'implémentation sous-jacente de l'une des données dans la parcelle peuvent rendre les données plus anciennes illisibles.

Questions connexes