我有这个结构:
"notifications" : {
"-KxoRpDJw6qt4kb1d4Ad" : {
"11B Boys" : {
"-L5QX6mvUI7Eed_FDK8R" : {
"body" : "hello",
"sender" : "h0ClA5VusLZMTDR6iyI4OAjLzm43",
"title" : "hi"
}
},
"All" : {
"-L5QB_D6n_G8B5si5zMd" : {
"body" : "d5d5",
"sender" : "h0ClA5VusLZMTDR6iyI4OAjLzm43",
"title" : "d5f6"
},
"-L5QBj31bF5On3xOIiM9" : {
"body" : "hfhfy",
"sender" : "h0ClA5VusLZMTDR6iyI4OAjLzm43",
"title" : "gdgdhc"
}
}
我的问题是onDataChange正确返回了第一条通知(与“ hello”正文和“ hi”标题混为一谈),其他消息返回得不好(它们的键被成功返回),但是似乎将它们视为null。
这是代码:
final String notificationDetails[] = token.split(";");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
tvTitle.setText(dataSnapshot.child("title").getValue(String.class));
tvBody.setText(dataSnapshot.child("body").getValue(String.class));
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
} ;
// school_id->topic->notification_id
FirebaseDatabase.getInstance().getReference("notifications").child(notificationDetails[0]).child(notificationDetails[1])
.child(notificationDetails[2]).addValueEventListener(valueEventListener);
最佳答案
找到了我自己的答案,我不知道为什么,但是当使用setValue()插入条目时,我必须一次发送整个节点。
插入:
ref.setValue(obj); // of type notification
代替:
ref.child("title").setValue("my title");
ref.child("body").setValue("my body");
关于android - Firebase数据库onDataChange有时无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48819407/