2017-08-13 6 views
1
私は、このデータベース持っ

enter image description hereFirebaseデータベーススナップショットは、nullを返します

このコード:

java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()

ので、 "N":私はこのエラーを持っている

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); 

を変数がnullの場合 私のコードに何が問題なのですか?

+1

「n」をトーストしようとしましたか? –

+1

newLesson.getDay()またはnがnullの場合...ログまたはトーストで両方を表示するようにしてください –

+0

newLesson.getDay()を文字列に変更してもエラーが表示されるので、「n」はnullです – Jkrr

答えて

1

onDataChangedにはsetValueの部分を置く必要があります。 onDataChanged内に発生したnでは、firebaseリスナーの非同期性が変化するため、アトミックに外部に反映されません。

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){ 

    } 
}); 

関連する問題