Android 将Firebase数据库查询与其他任务同步

Android 将Firebase数据库查询与其他任务同步,android,firebase,kotlin,firebase-realtime-database,Android,Firebase,Kotlin,Firebase Realtime Database,在我的活动中,我有一个if,它具有查询数据库的引用值 reference = if (valor == 1){ ConversationsAdapter.teste.child("messages") }else{ MainActivity.usersChatReference.child("messages") } 问题是,当我使用该reference变量作为引用来查询我的数据库时,我会收到一个错误消息“lat

在我的活动中,我有一个if,它具有查询数据库的引用值

reference  = if (valor == 1){
            ConversationsAdapter.teste.child("messages")
        }else{
            MainActivity.usersChatReference.child("messages")
        }
问题是,当我使用该
reference
变量作为引用来查询我的数据库时,我会收到一个错误消息“lateinit属性引用尚未初始化”。如何确保上述代码在该查询代码之前运行

reference.addChildEventListener(object : ChildEventListener{
            override fun onCancelled(p0: DatabaseError) {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

            override fun onChildMoved(p0: DataSnapshot, p1: String?) {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

            override fun onChildChanged(p0: DataSnapshot, p1: String?) {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

            override fun onChildAdded(p0: DataSnapshot, p1: String?) {
                teste()
            }

            override fun onChildRemoved(p0: DataSnapshot) {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }

        })

通过快速搜索,您似乎可以(并且需要)保护您的代码,以防不使用以下命令初始化变量:

if (::reference.isInitialized) {
  reference.addChildEventListener(object : ChildEventListener{
  ...
另见: