我有一段代码可以通过返回Firebase查询来更新变量。在本节之外,我引用该变量并进行打印。
但是,它似乎是作为异步操作执行的,并且在输入任何值之前先打印出该变量,所以我一直得到Hit
。 null
是否有on complete
?
addListenerForSingleValueEvent
编辑:
类似于Update value of variable from Firebase query?,但适用于Java。这是否意味着我必须使用反射?
答案 0 :(得分:1)
实际上,InvoiceTT
具有异步行为,因此您已经正确理解了问题。
不幸的是,我的解决方案是您可能因此必须更改方法。因此,您应该采用事件驱动的方法。因此,我将“当数据进入时,先做我的事情”,而不是“等待数据来然后再做我的事情”。
根据您的问题,在eventListeners
的{{1}}方法内打印值,这将确保您不会得到null并正确检索值。
除此之外,我在搜索时发现的另一种方法是onDataChange()
。我不会指望它,但是您可以在这里阅读更多有关此的信息: