null无法在我的应用程序中强制转换为非null类型java.util.HashMap

时间:2018-05-06 22:22:55

标签: java android kotlin

 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中遇到了问题,那就是错误:

kotlin.TypeCastException:null无法强制转换为非null类型java.util.HashMap                       at com.example.userandro.phonetracker.MainActivity $ refreshUsers $ 1.onDataChange(MainActivity.kt:87)

我需要帮助

1 个答案:

答案 0 :(得分:2)

尝试将null投射到non-null type时会发生此错误。这是Kotlin中的运行时错误。在下面的行中,valuenull,但指定的类型不可为空。

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

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

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