火力地堡不调用OnChildChanged活动
鉴于以下DB计划: 火力地堡不调用OnChildChanged活动
我要听任何mHotZoneRecord变化。这样做,我做了如下:
mDBRefUsers = mDatabase.getReference("https://*.com/users/");
mDBRefUsers.child("mHotZoneRecord").addChildEventListener(new HotZoneNotification(this));
和其他地方的代码中,实现HowZoneNotification
类
class HotZoneNotification extends TableSyncInfo
implements ChildEventListener {
OnChildChanged();
OnChildAdded();
}
的问题是我不是任何得到OnChildChanged事件。
我在做什么错了?
您将用户设置为不在mHotZoneRecord上。要设置监听器,您必须访问'-Kt8Y ......',以便执行您想要的操作,然后执行这些更改。
mDBRefUsers = mDatabase.getReference("https://*.com/users/");
mDBRefUsers.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// dataSnapshot .. hold list of users keys .. now you can hold it to set your listener
for(DataSnapshot dataSnapShot1 : dataSnapshot.getChildren()){
mDBRefUsers.child(dataSnapShot1.getValue(String.class))
.child("mHotZoneRecord")
.addChildEventListener(new HotZoneNotification(this));
// this equals users.child("-Kt8YIIAEH6EKXIbh3YN").child("mHotZoneRecord").[YOU LINSTER]
}
}
你做错的是你告诉数据库,有一个名为“mHotZoneRecord”在用户分支 这样PIC
因此,我所做的孩子,我在“用户”分支进入然后我得到所有的密钥“Kt8YIIAEH6EKXIbh3YN - Kt8A ....”然后我设置监听器在“mHotZoneRecord”孩子包含在键中。
感谢你的回答?但为什么使用SingleValueEvent而不是每次都会调用的常规valueEvent? –
,因为您只需访问密钥,因此您无需在密钥上设置事件侦听器。 –
'只有在'/ users'下的现有节点发生变化时,才会调用'onChildChanged()'。 –
你没有实现这些方法吗?也许我们可以帮助更多,如果你显示'HotZoneNotification'的完整实现 –
这些已经实现,但由我删除,因为在我看来这个例子并不重要,因为回调本身没有被调用,并且mDbLitute和mdbLongtitude做了改变 –