Синхронизировать Firebase Database Query с другой задачей - PullRequest
0 голосов
/ 13 февраля 2020

В моей деятельности у меня есть 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.
            }

        })

1 Ответ

0 голосов
/ 13 февраля 2020

При быстром поиске кажется, что вы можете (и должны) защитить свой код от возможной не инициализации переменной с помощью:

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

Также см .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...