Convertir Carte de regrouper dans android
Est-il un moyen facile de convertir une Carte pour un Bundle android sans autorisation explicite de l'itération?
Pourquoi?
Firebase retourne une Carte de Notification getData()
. J'ai besoin de transmettre les données à une intention. Anciennement GCM m'a donné un paquet, donc je n'ai pas besoin de vous inquiéter à ce sujet.
- "Est-il un moyen facile de convertir une Carte pour un Bundle android sans autorisation explicite de l'itération?" -- note qu'un
Map
n'équivaut pas nécessairement à uneBundle
. UnMap
peuvent avoir des clés qui ne sont pas des chaînes. UnMap
peut avoir des valeurs qui ne sont pas pris en charge les types de données. - Oui, mais dans mon cas, elles sont toutes les primitives et de la Chaîne
- Vous pourriez sérialiser.
- Le RemoteMessage objet est parcelable, vous pouvez simplement envoyer directement dans l'intention
Vous devez vous connecter pour publier un commentaire.
Je suppose que la bonne vieille boucle for est la façon la plus simple:
putString
. vous feriez mieux d'utiliser l'intention de gérer le type de variation pour vous et l'utiliserintent.putExtra(entry.getKey(), entry.getValue())
donc différents types de données ne faites pas le problème pour vous.RemoteMessage#getData()
retourne maintenant unMap<String, String>
à l'exclusion d'un tas de valeurs internes.Est venu à travers ce même problème avec firebase de messagerie et créé un kotlin extension de la fonction pour cela. Le l'essentiel est ici, code ci-dessous. Bien que je suis en utilisant cette méthode il y a quelques mises en garde:
Avec cela à l'esprit, merci de l'utiliser comme un guide pas à une solution définitive. Je vais garder l'essentiel à jour à mesure qu'il évolue.
Vous pouvez utiliser
writeToParcel(Parcel out, int flags)
pour générer unParcel
que pourrait avoir la même utilité, puisque c'est un parent de la classe deBundle
, et il est bien intégré dans le Firebase dans le cadre de laRemoteMessage
classe. La Documentation est ici.Parcel
est une super-classe deBundle
, si bien qu'il peut même être utile, ils ne peuvent pas être utilisés de façon interchangeable.voici comment je l'ai fait dans Kotlin