【发布时间】:2020-04-16 12:22:33
【问题描述】:
我目前正在 Android 中使用 Kotlin 进行培训,但每当我尝试访问 Firebase 数据库中当前的数据时都会遇到问题。这是数据库中的数据:
之后,在将应用程序与 Firebase 链接后,我刚刚创建了一个包含所有必需导入的主要活动,但不幸的是,每当我执行应用程序并按下按钮时,什么都没有发生。
private lateinit var userReference : DatabaseReference
lateinit var textView : TextView
lateinit var button : Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
textView = findViewById(R.id.test)
button = findViewById(R.id.test2)
button.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
userReference = FirebaseDatabase.getInstance().getReference("Users")
Log.d("IPP", "Im here now...")
userReference.addValueEventListener(object : ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
Log.d("ipp", p0.message)
}
override fun onDataChange(p0: DataSnapshot) {
Log.d("Ipp", "Im in the onDataChange")
for (childDataSnapshot in p0.children) {
Log.d("Ipp",childDataSnapshot.key) }
}
})
}
})
}
日志没有出现任何时候,这真的很烦人,当我搜索文档时,据我所知,这是我应该做的一切(我还检查了数据库中的规则,并阅读/ write 始终为真)。
编辑:我忘了说,执行时出现的唯一日志是“我现在在这里...”,单击正在工作的按钮后的日志。
编辑 2:数据库中的规则设置为现在允许对每个人进行读/写,仅用于测试目的。 Rules in database
【问题讨论】:
-
你的
onDataChange被触发了吗? -
请为您的数据库打印照片
-
好像没有,这就是我感到惊讶的原因。
-
你的照片已经在帖子里了,你应该可以从我包含 Ahmed 的链接中看到它
-
每条日志消息的大小写不同。您也不处理数据为空的情况(检查
p0.hasChildren())。我还考虑将事件侦听器变成它自己的变量,就像在 docs 中一样 - 也许垃圾收集器正在发挥作用。
标签: android firebase kotlin firebase-realtime-database