Kotlin 类没有从 firebase 获取其布尔值
Posted
技术标签:
【中文标题】Kotlin 类没有从 firebase 获取其布尔值【英文标题】:Kotlin class does not get its boolean value from firebase 【发布时间】:2018-03-06 11:48:45 【问题描述】:我的 kotlin 类为
class Center : Serializable
var active: Boolean? = null
var address: String? = null
var isJobAccessGranted: Boolean? = null
这是我获得价值的方式
//from java class
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s)
centerMap.put(dataSnapshot.getKey(), dataSnapshot.getValue(Center.class));
但问题是我得到active
字段的值没有任何问题。但isJobAccessGranted
布尔字段始终保持为空。我已经测试了一些其他布尔删除 is
前缀,它工作正常。当我使用isActive
或isJobAccessGranted
时,我没有得到布尔值。谁能解释我为什么会面临这个问题。 #AskFirebase
【问题讨论】:
您有一个名为 isJobAccessGranted 的属性,因此适当生成的 getter 将是 isIsJobAccessGranted。也许是问题所在? no @mike 它没有生成 isIsJobAccessGranted 不知道这背后的确切原因,但使用@field:JvmField
而不是var isJobAccessGranted: Boolean? = null
解决了我的问题
【参考方案1】:
如Kotlin
中的comment 中所述,您应该为类中的每个Boolean
字段添加@field:JvmField
,因为当Kotlin
转换为Java
时,它会生成setter,其名称无法被JSON 解析器解析.而@field:JvmField
注解覆盖了这个特性,就会有正确的setter名称,并且会正确解析JSON。
【讨论】:
为什么这不在 Firebase Kotlin 文档的首页? @r3dm4n 现在在Firestore docs 上。感谢您的建议!以上是关于Kotlin 类没有从 firebase 获取其布尔值的主要内容,如果未能解决你的问题,请参考以下文章
从 Firebase android kotlin 获取数据时如何显示加载的项目
如何从 Firebase.auth.currentUser Android Kotlin 获取刷新令牌
如何从 Firebase android kotlin 获取所有具有特定价值的孩子?
使用 Kotlin 的 Firebase 云消息传递 Android