Android 我的程序可以';无法从Firebase中的addChildEventListener获取结果
数据库结构Android 我的程序可以';无法从Firebase中的addChildEventListener获取结果,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,数据库结构 questions questionId options optionId label score ... 首先,我在代码中创建了一个数据库引用 mQuestionDatabaseReference = FirebaseDatabase.getInstance().getReference("questions").child(questionId).child("options").child(
questions
questionId
options
optionId
label
score
...
首先,我在代码中创建了一个数据库引用
mQuestionDatabaseReference = FirebaseDatabase.getInstance().getReference("questions").child(questionId).child("options").child(optionId);
然后在一个选项中,我使用事务更改了score的值
mQuestionDatabaseReference.child("score").runTransaction(new Transaction.Handler() { ...
我可以成功更新分数值。现在我想知道数据库中的分数是否已经更新,这样我就可以使用addChildEventListener更新我的UI
mQuestionDatabaseReference.addChildEventListener(new ChildEventListener() {..
这个没问题。现在,我只想知道这个选项的分数子项是否更新了,而不是整个选项。所以我就这么做了
mQuestionDatabaseReference.child("score").addChildEventListener(new ChildEventListener() {..
现在,当我成功更新一个选项时,这个新的子事件侦听器无法得到结果。您正在
/optionId/score
中添加一个ChildEventListener
,但是score实际上没有任何子事件,因此永远不会触发回调
mQuestionDatabaseReference.addChildEventListener(new ChildEventListener() {..
在这种情况下,您应该使用ValueEventListener
mQuestionDatabaseReference.child("score").addValueEventListener(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//dataSnapshot.getValue ...
}
});
获取更多信息。您在
/optionId/score
中有什么类型的数据?一个int类型的数据(数字)我想我需要更多地阅读方法名称,哈哈哈。谢谢大家!@Devadnqp和hsuahsua。这种情况经常发生。:)恭喜你问了这么多问题!