有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 null不能强制转换为非null类型的java。util。我的应用程序中的HashMap

 fun refreshUsers() {
    val userData = UserData(this)
   databaseRef!!.child("User").child(userData.loadPhoneNumber()).child("Finders")
            .addValueEventListener(object :
            ValueEventListener {

        override fun onDataChange(dataSnapshot: DataSnapshot?) {

            val td = dataSnapshot!!.value as HashMap<String,Any>

           listOfContact.clear()
            if (td==null){
                listOfContact.add(UserContact("NO_USERS","nothing"))
                adapter!!.notifyDataSetChanged()
                return
            }
            for (key in td.keys){
                val name = listOfContacts[key]
                listOfContact.add(UserContact(name.toString(),key))
            }
            adapter!!.notifyDataSetChanged()
        }

hashmap中有一个问题,这就是错误:

科特林。TypeCastException:null不能转换为非null类型java。util。哈希图 在com。实例乌瑟安德罗。电话跟踪器。MainActivity$refreshUsers$1。onDataChange(主要活动kt:87)

我需要帮助


共 (1) 个答案

  1. # 1 楼答案

    尝试将null强制转换为non-null type时发生此错误。这是Kotlin中的运行时错误。在下面的行中,valuenull,但是指定的类型不能为null

    val td = dataSnapshot!!.value as HashMap<String,Any>
    

    如果目的是使变量可以为null,则可以使用as?(带问号)代替"safe" (nullable) cast operator。如果失败,结果将是null,而不是异常

    val td = dataSnapshot!!.value as? HashMap<String,Any>