फ़ायरबेस मैसेजिंग के साथ इस मुद्दे पर आया और इसके लिए कोटलिन एक्सटेंशन फ़ंक्शन बनाया। gist is here, नीचे कोड। हालांकि मैं इस पद्धति का उपयोग कर रहा हूँ वहाँ कुछ चेतावनियां हैं:
- यह प्रकार है कि एक बंडल में रखा जा सकता है के सभी को कवर नहीं करता
- यह विकास के अंतर्गत अभी भी है और पूरी तरह से
परीक्षण नहीं किया गया
इस बात को ध्यान में रखते हुए, कृपया इसे एक गाइड के रूप में उपयोग करें जो एक निश्चित समाधान नहीं है। जब मैं विकसित होता हूं तो मैं गस्ट को अद्यतित रखूंगा।
import android.os.Bundle
import android.os.IBinder
import android.os.Parcelable
import java.io.Serializable
fun <V> Map<String, V>.toBundle(bundle: Bundle = Bundle()): Bundle = bundle.apply {
forEach {
val k = it.key
val v = it.value
when (v) {
is IBinder -> putBinder(k, v)
is Bundle -> putBundle(k, v)
is Byte -> putByte(k, v)
is ByteArray -> putByteArray(k, v)
is Char -> putChar(k, v)
is CharArray -> putCharArray(k, v)
is CharSequence -> putCharSequence(k, v)
is Float -> putFloat(k, v)
is FloatArray -> putFloatArray(k, v)
is Parcelable -> putParcelable(k, v)
is Serializable -> putSerializable(k, v)
is Short -> putShort(k, v)
is ShortArray -> putShortArray(k, v)
// is Size -> putSize(k, v) //api 21
// is SizeF -> putSizeF(k, v) //api 21
else -> throw IllegalArgumentException("$v is of a type that is not currently supported")
// is Array<*> -> TODO()
// is List<*> -> TODO()
}
}
}
"क्या स्पष्ट मानचित्र के बिना एंड्रॉइड में एक मानचित्र को एक बंडल में परिवर्तित करने का कोई आसान तरीका है?" - ध्यान दें कि एक 'मानचित्र' जरूरी नहीं है कि वह 'बंडल' के बराबर हो। एक 'मानचित्र' में कुंजी हो सकती है जो तार नहीं हैं। एक 'मानचित्र' में ऐसे मान हो सकते हैं जो समर्थित डेटा प्रकारों में से एक न हों। – CommonsWare
हां, लेकिन मेरे मामले में वे सभी प्राइमेटिव हैं और स्ट्रिंग –
आप इसे क्रमबद्ध कर सकते हैं। – cyroxis