2017-09-28 7 views
0

私はFirebaseを使用しています。最後のキー(メッセージ)を取得したいと思います。しかし、私のコードではNPEだけを生産しています。 FBデータベースの構造は、ここで見ることができます:Firebaseが最後の子を取得してヌルを生成する

Structure of DB

Query lastQuery = rootRef.child("Chatmessages").child(last).child(userid).orderByKey().limitToLast(1); 
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String message = dataSnapshot.child("message").getValue().toString(); // Error on this line 
     // viewHolder.setUserStatus(message); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 

答えて

1

クエリは、配列ではなく単一のオブジェクトを返すので、あなたはそれが持っている唯一のオブジェクトを取得するためにdataSnapShot以上のループをすべきです:最後のチャット...

@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    for (DataSnapshot child: dataSnapshot.getChildren()) { 
     String message = child.child("message").getValue().toString(); 
     // viewHolder.setUserStatus(message); 
    } 
} 
関連する問題