Konvertieren Karte zu Bundle in android
Gibt es einen einfachen Weg, um konvertieren Anzeigen, um ein Bundle in android ohne explizite iteration?
Warum?
FB gibt eine Karte für die Benachrichtigung getData()
. Ich brauche die Daten übergeben, die der Absicht. Früher GCM gab mir ein Bündel, so brauchte ich nicht zu sorgen.
- "Gibt es einen einfachen Weg, um konvertieren Anzeigen, um ein Bundle in android ohne explizite iteration?" - beachten Sie, dass eine
Map
ist nicht unbedingt gleichzusetzen mit einerBundle
. EinMap
können Tasten, die nicht strings. EinMap
können Werte haben, die nicht einem der unterstützten Datentypen. - Ja, aber in meinem Fall Sie sind alle primitive und String
- Sie könnte es zu serialisieren.
- Die RemoteMessage parcelable-Objekt ist, können Sie einfach senden, die direkt in der Absicht,
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke ich mal eine gute alte altmodischen for-Schleife ist der einfachste Weg:
putString
. nutzen Sie besser die Absicht zu behandeln, Typ-Variante für Sie und verwendenintent.putExtra(entry.getKey(), entry.getValue())
so unterschiedliche Datentypen dont make problem für Sie.RemoteMessage#getData()
gibt jetzt eineMap<String, String>
ohne ein Bündel die inneren Werte.Stieß auf das gleiche Problem mit FB messaging und erstellt eine kotlin Erweiterung Funktion für Sie. Die gist ist hier, folgenden code ein. Zwar bin ich mit dieser Methode es gibt einige Einschränkungen:
Mit diesem im Verstand, bitte verwenden Sie es als Leitfaden, nicht eine endgültige Lösung. Ich halte die Kernaussage up-to-date, wie es sich entwickelt.
Können Sie
writeToParcel(Parcel out, int flags)
zu generierenParcel
werden könnte, ähnlich nützlich, da es ein parent-KlasseBundle
, und es ist handlich gebaut, in der FB-framework als Teil derRemoteMessage
Klasse. Dokumentation ist hier.Parcel
ist eine Superklasse vonBundle
, also, während kann es ebenso nützlich, Sie können nicht austauschbar verwendet werden.hier ist, wie ich es Tat in Kotlin