首页 > 解决方案 > Kotlin:将地图的键集转换为字符串数组

问题描述

我正在尝试设置 Spinner 下拉菜单的选项,这需要将选项数组作为最后一个参数。但是,当我运行我的代码时,我收到以下错误:

java.util.HashMap$KeySet 不能转换为 java.lang.String[]

下面是我的代码:

var ringtoneNamesToURIs: MutableMap<String, String> = getRingtoneList()
var ringtoneNames: Array<String> = ringtoneNamesToURIs.keys as Array<String>

val ringtoneSpinner = root.findViewById(R.id.ringtoneSpinner) as Spinner
val ringtoneDropdown: ArrayAdapter<String>? = context?.let {
    ArrayAdapter<String>(
        it,
        android.R.layout.simple_spinner_item,
        ringtoneNames
    )
}

标签: androidkotlin

解决方案


映射中的键保存在 Set 中,而不是数组中。所以你不能随便投。您必须将键设置为数组。

val ringtoneNames:Array<String> = ringtoneNamesToURIs.keys.toTypedArray() 

推荐阅读