Kotlin Android - saving mutableMap in savedInstanceState?

can we store a map into savedInstanceState? directly or indirectly…

maybe working on the map to produce 2 arrays then combine them back to map at onCreate?

I worked on it. wonder why i didn’t find anyone asking about this before, probably there are better ways. but in case that someone needs to know how this is done. i did it this way…

i used onSaveInstanceState to check if the map was initialized, then proceeded

override fun onSaveInstanceState(savedInstanceState: Bundle) {
        if (::answersMap.isInitialized){
            val keys = (answersMap.keys).toIntArray()
            val values = (answersMap.values).toBooleanArray()
            savedInstanceState.putIntArray(KEYS, keys)
            savedInstanceState.putBooleanArray(VALUE, values)

also on the onCreate function I retrieved the arrays and created the mutablemap i needed

override fun onCreate(savedInstanceState: Bundle?) {
        val keysArray = savedInstanceState?.getIntArray(KEYS) ?: IntArray(0)
        val valuesArray = savedInstanceState?.getBooleanArray(VALUE) ?: BooleanArray(0)
        answersMap = mutableMapOf<Int, Boolean>().apply {
            for (i in keysArray.indices) this [keysArray[i]] = valuesArray[i]

in case you were wondering about the answerMap type

private lateinit var answersMap : MutableMap<Int, Boolean>