Firebase数据库快照返回null

时间:2017-08-13 13:12:10

标签: android firebase firebase-realtime-database

我有这个数据库: enter image description here

和这段代码:

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference dataRef = database.getReference();
number = dataRef.child("planlekcji3").child("Monday").child("lessons");
number.addListenerForSingleValueEvent(new ValueEventListener() {
     @Override
     public void onDataChange(DataSnapshot snapshot) {
         n = snapshot.getValue(String.class);
         number.setValue(Integer.parseInt(n)+1);
     }

     public void onCancelled(DatabaseError error){

     }
 });
dataRef.child("planlekcji3").child("Monday").child(n).setValue(newLesson);

我有这个错误:

  

java.lang.NullPointerException:无法为child()中的参数'pathString'传递null

所以“n”变量为null, 我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

您应该将setValue部分放入onDataChanged。由于firebase侦听器的异步性质,n内发生的onDataChanged内的更改不会在原子上反映在外部。

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference dataRef = database.getReference();
number = dataRef.child("planlekcji3").child("Monday").child("lessons");
number.addListenerForSingleValueEvent(new ValueEventListener() {
     @Override
     public void onDataChange(DataSnapshot snapshot) {
         n = snapshot.getValue(String.class);
         number.setValue(Integer.parseInt(n)+1);
   dataRef.child("planlekcji3").child("Monday").child(n).setValue(newLesson);
     }

     public void onCancelled(DatabaseError error){

     }
 });

希望有所帮助!

相关问题