所以我尝试创建一个侦听器,在Firebase中将新条目添加到我的数据库时宣传该活动,如下所示:
public void dataListener() {
Query lastQuery = mDatabase.child("id").orderByKey().limitToLast(1);
lastQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d("ChildAdded",dataSnapshot.getChildren().toString());
getAddedUpdates(dataSnapshot);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("ChildError",databaseError.toString());
}
});
我正在调用此dataListener onCreate
,但没有任何反应,我的意思是,当我在另一部手机上添加新条目时,即使已插入数据,也未触发此条目(当我在另一个方法中使用singleEeventListener重新加载应用程序时,会收到数据)
所有字段均为文本(字符串)
答案 0 :(得分:1)
位置错误,您需要更改此内容:
Query lastQuery = mDatabase.child("id").orderByKey().limitToLast(1);
进入这个:
DatabaseReference ref=FirebaseDatabase.getInstance().getReference();
Query lastQuery=ref.orderByKey().limitToLast(1);
快照位于根节点,然后您就可以订购密钥并检索最后一个密钥。
child("id")
下面没有任何密钥,例如:
id
pushid
name: peter
child'("id")
等于randomid然后你可以这样做:
Query lastQuery=ref.orderByChild("id").equalTo(key_here)