和这段代码:
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, 我的代码出了什么问题?
答案 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){
}
});
希望有所帮助!