Почему приложение отключается, когда я хочу получить данные из Firebase? - PullRequest
0 голосов
/ 18 июня 2019

Я создаю приложение Google Maps для Android в Котлине, и здесь используется соединение с Firebase.Сбой во время соединения с Firebase

. Я могу добавить данные в базу данных, но когда я пытаюсь загрузить данные, происходит сбой приложения.В базе данных есть таблица «города», в которой хранятся объекты типа «Город».


 private lateinit var citiesList: MutableList<City>
...

 citiesList = mutableListOf()
        var ref = FirebaseDatabase.getInstance().getReference("cities")

        ref.addValueEventListener(object: ValueEventListener {
            override fun onDataChange(p0: DataSnapshot) {
                for ( c in p0.children) {
                    val city  = c.getValue(City::class.java)
                    citiesList.add(city)
                }
            }

И класс Сити:

class City ( val name: String, val latitude: Double, val longitude: Double)

В этой строке вылетает приложение:

val city = c.getValue (City :: class.java).

Кроме того, я не знаю, почему тип города имеет значение «City?»,не «Город». Может быть, это источник проблемы. Я не могу добавить город в список городов: Type mismatch. Required: City, Found: City?

1 Ответ

0 голосов
/ 18 июня 2019

Чтобы решить эту проблему, измените класс City с:

class City ( val name: String, val latitude: Double, val longitude: Double)

на

class City (val name: String = "", val latitude: Double = 0.0, val longitude: Double = 0.0)

В противном случае вы получите следующую ошибку:

java.lang.RuntimeException: не удалось десериализовать объект.Класс City не определяет конструктор без аргументов.Если вы используете ProGuard, убедитесь, что эти конструкторы не удалены.

Помните, что каждое поле в вашем классе City должно быть инициализировано в конструкторе.

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