当我想从Firebase获取数据时,为什么应用程序会关闭?

时间:2019-06-18 09:31:15

标签: android firebase firebase-realtime-database kotlin

我正在Kotlin中创建一个Android专用的Google Maps App,并且与Firebase有关联。在与Firebase连接期间崩溃

我可以将数据添加到数据库,但是当我尝试下载数据时,应用程序崩溃。在数据库中,我有表“ cities”,其中存放着“ City”类型的对象。


 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)。

我也不知道为什么城市价值的类型是“城市”,而不是“城市”。也许这是问题的根源。我无法将城市添加到城市列表:Type mismatch. Required: City, Found: City?

1 个答案:

答案 0 :(得分:0)

要解决此问题,请从以下位置更改您的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:无法反序列化对象。 Class City没有定义无参数的构造函数。如果您使用的是ProGuard,请确保不删除这些构造函数。

因此请记住,City类中的每个字段都必须在构造函数中初始化。