J'essaie de transmettre un tableau d'objets Address à une autre activité via un objet Intent. Comme la classe Address implémente l'interface Parcelable, j'essaie de procéder comme suit. J'ai un objet Adresse de liste d'un objet Geocoder que je convertis en un tableau d'objets Address. Ensuite, je mets ce tableau dans l'intention et appelle l'activité.Comment passer un tableau d'objets Address à un autre Acitvity
final Address[] addresses = addresseList.toArray(new Address[addresseList.size()]);
final Intent intent = new Intent(this, SelectAddress.class);
intent.putExtra(SelectAddress.INTENT_EXTRA_ADDRESSES, startAddresses);
startActivityForResult(intent, REQUEST_CODE_ACTIVITY_SELECT_ADDRESSES);
Sur l'autre activité, j'essaie de récupérer l'adresse [] de l'intention avec le morceau de code suivant. Mais l'appel de la dernière ligne se termine par une ClassCastException Landroid.os.Parcelable
.
Bundle bundle = getIntent().getExtras();
Address[] addresses = (Address[]) bundle.getParcelableArray(INTENT_EXTRA_ADDRESSES);
Qu'est-ce que je fais mal? Comment dois-je récupérer l'adresse [].
« Salut, je suis en train de passer un tableau d'objets d'adresse à une autre activité à travers un objet Intent. » -- Pourquoi? Pour moi, passer des objets complexes entre les activités est une odeur de code. Considérez les extras 'Intent' comme étant des paramètres GET sur une URL. Si ce sont deux pages Web, passeriez-vous un tas d'objets 'Address' en tant que paramètres GET sur une URL dans un lien? En supposant que le passage d'un tableau d'objets 'Address' est inévitable, quel est le type d'objet que vous récupérez? La ligne 'ClassCastException' devrait vous le dire. – CommonsWare
Le type mentionné par ClassCastException est un Landroid.os.Parcelable. – Flo
En ce qui vous concerne la transmission d'un tableau d'objets complexes à une activité. Ce que je veux faire est de fournir à l'utilisateur une deuxième activité où il peut choisir parmi une liste d'adresses, quand la recherche d'une adresse dans la première activité a retourné plusieurs résultats. Comment implémenteriez-vous cela sans passer les adresses à la deuxième activité pour les afficher dans un spinner, de sorte que l'utilisateur peut sélectionner l'un d'eux? – Flo