Reputation: 11
I want to fetch dates field but the code below is not doing so. the Toast is showing null (value of String date).
public String date;
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState){
DatabaseReference rootRef , demoRef;
//database reference pointing to root of database
rootRef = FirebaseDatabase.getInstance().getReference();
//database reference pointing to demo node
demoRef = rootRef.child("dates");
demoRef.child("date").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
date = dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Toast.makeText(getContext() , date , Toast.LENGTH_SHORT).show();
}
Upvotes: 0
Views: 115
Reputation: 1127
Use this code
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get Post object and use the values to update the UI
Post post = dataSnapshot.getValue(Post.class);
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
// ...
}
};
For further details check firebase documentation
https://firebase.google.com/docs/database/android/read-and-write
Upvotes: 0
Reputation: 80944
Add the toast inside onDataChange:
demoRef.child("date").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
date = dataSnapshot.getValue(String.class);
Toast.makeText(getContext() , date , Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Since onDataChange
is asynchronous,it moves on to another task before it finishes retrieving data , then you need to add the toast inside the method.
Upvotes: 1