我目前正在Android中使用静态编程语言进行培训,每当我试图访问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) }
}
})
}
})
}
日志没有出现任何时间,它真的很烦人,因为我在留档中搜索,据我所知,这是我应该做的一切(我还检查了数据库中的规则,读取/写入总是正确的)。
编辑:我忘了提到,执行时出现的唯一日志是“我现在在这里…”,点击正在工作的按钮后的一个。
编辑2:数据库中的规则设置为允许对每个人进行读/写操作,仅用于测试目的。数据库中的规则
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").getReference("0") <-------- add this
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) }
}
})
}
})
}
添加. get参考("0")
逻辑有点问题,每次按下按钮时都会得到相同的实例,将DatabaseReference的初始化移到按钮外,还有侦听器,因为它们正在按钮内侦听
userReference = FirebaseDatabase.getInstance().getReference("Users")
button.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
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) }
}
})
现在,每次在用户引用中添加值时,都会触发addValueEventListener,您可以通过单击按钮在用户内部测试此设置值
@peter-hadada peter是对的,但我会解释,如果你需要它,或者有人会找到解决方案一天这里是数据库Firebase的默认规则,使其为假,以防止未经授权的用户访问您的数据库,所以现在将其更改为true阅读和赖特,但在发布版本的工作时,请使其为假,并为用户登录或注册
我已经花了几个小时阅读产品分支中的0和1。请在Firebase数据库有经验的人帮助我:(
我正在尝试读取我的Flutter应用程序中的firebase实时数据库中的数据,并将其分配给模型类,但是,我在控制台中得到了以下错误。 下面是我到目前为止所做的代码 员工类别 我不知道我做错了什么,请帮我解决这个问题
Firebase实时数据库似乎会在添加或删除新项目等时通知我。这很好,但如何获取之前通知我的所有现有项目? 例如,假设我的应用程序列出了数据库中的项目。我第一次启动了我的应用程序。然后创建了“项目1”和“项目2”。Firebase通知我“项目1”和“项目2”,因此我将它们添加到我的应用程序列表中。 现在,我的应用程序已关闭并重新启动。如果创建了新项目“项目3”,我会收到通知,但如何再次检索“项目1
我正在一个聊天应用程序,其中消息存储在firebase实时数据库。现在,如果我创建一个如下所示的节点(Chats-Better-A-ID和-B-ID是自动生成的聊天室密钥),那么我想知道当用户S在聊天应用程序中打开与用户T聊天时,so数据库将只读取存储在Chats-Better-S-T-ID中的消息,而不会读取其他聊天室消息!?我说的对吗?如果是,那么它会降低定价吗? 或 如果我存储如下所示的数据
我有一个Firebase实时数据库,在那里我存储谷歌地图标记数据。看起来是这样的:Firebase数据库 我的应用程序可以选择将您自己的标记添加到数据库中,我的问题是我的应用程序只从Studio 1和T1读取信息,而不是从. ush()添加的随机键中读取信息。当我通过应用程序添加标记时。关于如何让它读取随机键下的标记信息有什么想法吗?我的代码如下所示: 而且 } 最后在哪里向数据库添加新标记: 到
我想从实时数据库中获取数据,数据以地图的形式存在 虽然Product类只是一个普通类,其PRICE属性为Double,但其他所有属性都是String。执行此代码时,会产生以下错误。 I/flatter(4228):类型“\u InternalLinkedHashMap”不是类型“String”的子类型 我可以使用什么样的数据结构/方法/解决方法? 产品类别