Comment passer des données entre les activités avec Android Parcelable 1

Comment passer des données entre les activités avec Android Parcelable

introduction

Nous avons souvent besoin de transmettre des données entre les activités d’une application Android. Un moyen simple de le faire est d’utiliser Intent.putExtra(), mais si vous avez beaucoup de données structurées à transmettre, Parcelable peut être une meilleure solution. Dans cet article, je vais vous montrer comment Parcelable facilite la sérialisation des classes pour le partage entre les activités.

Pourquoi Parcelable?

Parcelable est une interface uniquement Android. Il permet aux développeurs de sérialiser une classe afin que ses propriétés soient facilement transférées d’une activité à une autre. Cela se fait en lisant et en écrivant des objets à partir de Parcels, qui peuvent contenir des données aplaties dans des conteneurs de messages.

Création de l’activité principale et de la mise en page

Notre activité principale se chargera de la collecte des détails du livre. Commençons par configurer notre onCreate méthode.

Ensuite, ouvrez activity_main.xml pour configurer la disposition et l’apparence de la vue. Vous aurez besoin de deux champs de saisie de texte et d’un bouton pour la soumission.

Ça devrait ressembler à ça:

Ouvrez maintenant votre activité principale et liez les champs d’affichage à votre activité. Vous devrez le faire dans votre onCreate() méthode, comme ceci:

Pour finir MainActivity, vous devez configurer un onClickListener. Ce sera appelé chaque fois que le Soumettre le bouton est enfoncé. Lorsque cela se produit, les détails saisis doivent être collectés et envoyés à l’activité suivante.

Ici, vous ajoutez un onClickListener à la Button instance que vous avez récupérée de votre mise en page Activité. Ce code sera exécuté chaque fois que le Soumettre bouton est cliqué.

Notez que nous passons simplement le Book instance à putExtra(). Comme nous le verrons plus tard, Parcelable se charge de sérialiser les données du livre en une chaîne afin qu’elles puissent être passées via l’intention.

Maintenant que l’activité principale est terminée, nous devons créer notre BookActivity ainsi que la classe Livre pour contenir des informations sur le livre.

Créer la classe de livre

Créons un Book classe pour contenir des informations sur chaque livre.

Cette classe doit implémenter Parcelable. Cela permettra le passage des données de MainActivity à BookActivity.

Nous ajouterons également des fonctions getter standard et un constructeur pour créer rapidement une instance de la classe.

Écrire dans le colis

le writeToParcel méthode est l’endroit où vous ajoutez toutes vos données de classe au colis. Ceci est fait en préparation du transfert. Cette méthode recevra une instance Parcel qui a un certain nombre de méthodes d’écriture que vous pouvez utiliser pour ajouter chaque champ au colis. Attention: l’ordre dans lequel vous écrivez les données est important!

Voici comment procéder.

Lire les données du colis

Tout comme la méthode d’écriture gère l’écriture des données à transférer, le constructeur est utilisé pour lire les données transférées à partir du colis sérialisé. Cette méthode sera appelée sur l’activité de réception pour collecter les données.

Voici à quoi cela devrait ressembler:

L’activité réceptrice recevra les données sous forme de chaîne, puis appellera le getParcelableExtra méthode pour démarrer le processus de collecte des données. Cela déclenchera le constructeur que nous avons défini ci-dessus, qui désérialisera les données et créera un nouveau Book exemple.

Colisable.Créateur

Pour compléter votre classe Parcelable, vous devez créer un Parcelable.Creator instance et affectez-la au CREATOR champ. L’API Parcelable recherchera ce champ lorsqu’elle aura besoin de désérialiser une instance de votre classe qui a été transmise à un autre composant.

Cela lie tout ensemble. Son travail est simple: il génère des instances de votre classe Parcelable à partir d’un Parcel en utilisant les données de colis fournies. Le créateur appelle le constructeur que vous avez défini ci-dessus, en lui passant un Parcel objet et le constructeur initialise les attributs de classe.

Si votre classe Parcelable a des classes enfants, vous devrez faire très attention avec le describeContents() méthode. Cela vous permettra d’identifier la classe enfant spécifique qui doit être créée par le Parcelable.Creator. Vous pouvez En savoir plus sur la façon dont cela fonctionne sur Stack Overflow.

Activité et mise en page du livre

Nous pouvons maintenant compléter notre application avec le livre Activité. Allez-y et créez une nouvelle activité vide appelée BookActivity. Faites ressembler la mise en page à ce que j’ai ci-dessous.

dans le activity_book.xmltu n’en as besoin que de deux TextView widgets, qui seront utilisés pour afficher le titre et l’auteur des livres.

Maintenant, mettons en place notre activité. Votre activité devrait déjà ressembler à ceci:

Dans cette activité, vous souhaitez recevoir les données transmises par votre activité principale et les afficher dans vos vues. Ainsi vous récupérerez les instances de votre TextView en utilisant l’identifiant du TextView défini dans votre mise en page.

Ensuite, bien sûr, vous appellerez getIntent() car vous récupérerez des données dans cette activité. Les données que vous récupérerez sont collectées à partir de la classe Book en utilisant getParcelableExtra(). Ensuite, vous définissez les valeurs de TextViews aux données que vous avez collectées. Voici comment procéder.

Construisez votre application et lancez-la, et vous devriez voir la petite beauté que vous venez de créer.

L'application terminée

Conclusion

Dans cet article, vous avez vu comment vous pouvez facilement déplacer des objets d’une activité à une autre. Vous n’avez plus à récupérer séparément chaque champ de données que vous avez transmis à l’objet Intent, et vous n’avez pas à vous souvenir du nom sous lequel vous avez passé chaque champ. Non seulement cela, mais ce processus est plus rapide que la fonctionnalité de sérialisation de Java.

Dans ce didacticiel, vous avez appris à utiliser Parcelable pour transmettre des données d’une activité à une autre. Vous pouvez plonger plus profondément dans Parcelable en vérifiant le documentation officielle.

En attendant, consultez certains de nos autres articles sur le développement d’applications Android!

Soutenez notre effort ❤️

Si vous avez apprécié cet article, pensez à laisser un pourboire pour nous aider à continuer à publier du contenu de qualité.

Paiement sécurisé sur PayPal
Moyens I/O Staff est une équipe de rédacteurs spécialisés, passionnés par la technologie, l’innovation et les usages numériques. Forts d’une expertise pointue en IA, applications mobiles, gaming et tendances digitales, nous produisons un contenu rigoureux, vérifié et utile. Notre mission : vous offrir une information fiable et claire pour mieux naviguer dans le monde numérique en constante évolution. Découvrez les avis de nos lecteurs sur Trustpilot.