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

标签 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 在 com.example.userandro.phonetracker.MainActivity$refreshUsers$1.onDataChange(MainActivity.kt:87)

我需要帮助

最佳答案

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

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

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

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

关于java - 在我的应用程序中,null 无法转换为非 null 类型 java.util.HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50205065/

相关文章:

android - 与 EditText 的两种方式数据绑定(bind)

kotlin - 此表达式将在后续版本中解析为 Int。请添加明确的约定调用

java - 为什么相同的代码在 Java 中的工作方式不同?

java - TestNG异常: Cannot Instantiate class

android - 删除 Android 中 BottomSheet Fragment 中导航栏的间隙/边距

java - 如何清理生成的数据绑定(bind)文件?

java - 多重集的多种组合的设计模式(用户角色)

java - Spring Data 填充 @LastModifiedDate 而不是 @CreatedDate

android - 在 RecyclerView Adapter 布局项顶部显示 PopupWindow

android - 在 android-studio/gradle 中添加全局库的正确方法