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。这种情况经常发生。:)恭喜你问了这么多问题!