Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Kotlin Firebase反序列化_Java_Firebase_Kotlin_Firebase Realtime Database - Fatal编程技术网

Java Kotlin Firebase反序列化

Java Kotlin Firebase反序列化,java,firebase,kotlin,firebase-realtime-database,Java,Firebase,Kotlin,Firebase Realtime Database,我正在尝试使用Kotlin将数据从Firebase反序列化到POJO,这是我的POJO类: class Message { var number: String ?= null var message: String? = null var timestamp: Long = 0L var isHandled: Boolean ?= false var type:String ?=null } 这是我从Firebase检索数据的代码 val query = Fire.REF.child("sm

我正在尝试使用Kotlin将数据从Firebase反序列化到POJO,这是我的POJO类:

class Message {
var number: String ?= null
var message: String? = null
var timestamp: Long = 0L
var isHandled: Boolean ?= false
var type:String ?=null
}
这是我从Firebase检索数据的代码

val query = Fire.REF.child("sms").orderByChild("type").equalTo("outbox-unsent")
    query.addChildEventListener(object : ChildEventListener {
        override fun onChildAdded(dataSnapshot: DataSnapshot, key: String) {
            val outbox = dataSnapshot.getValue(Message::class.java)
            Log.d("BS", "Background Service $outbox")
           }
//......
});
这是我在Firebase上的数据结构

"sms":{
"-KI3ar91oBXGNpXXrOCS" : {
"handled" : false,
"message" : "Pak kenapa koneksi...",
"number" : "+6285830166314",
"timestamp" : 1463587399000,
"type" : "inbox"
},
//.......//
}
当我执行代码时,它会引发一个错误:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter key

我在上述代码上的错误在哪里?

正如奥古斯托在上文所说,Kotlin是空安全的,但在上述函数中,关键参数可能为空。 所以代码应该是这样的

onChildAdded(dataSnapshot: DataSnapshot, key: String?)

在关键参数后添加问号

我对firebase没有任何经验,但eventlistener中的参数
关键
似乎为空。能否将onchildaded的参数更改为
String?
并重试?我的错,是的,我跟踪了第二个参数,该参数可能为null。这个问题解决了吗?有人能发布一个有效的解决方案来解决这个问题吗?正如奥古斯托在上面所说,Kotlin是空安全的,但是在上面的函数中,关键参数可能是空的。因此,代码应该像这样
onchildaded(dataSnapshot:dataSnapshot,key:String?
在key参数后添加问号