I've made a class to work with my firebase databse. At the current moment it gives me opportunity to get some user data from my DB. It totally works, when I get my object in the onDataChange method (I use Log.w to check that), but when I try to use userData, that my getUserData returns, it becomes null. Why does it happen? Here is my code:
import android.util.Log;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
/**
* Created by Aldres on 25.02.2018.
*/
public class DBtools {
private FirebaseAuth mAuth;
private FirebaseUser mUser;
private FirebaseDatabase mDb;
private DatabaseReference ref;
private String uid;
private User userData;
private void initDb(){
mAuth = FirebaseAuth.getInstance();
mUser = mAuth.getCurrentUser();
if (mUser!=null) {
uid = mUser.getUid();
}
mDb = FirebaseDatabase.getInstance();
ref = mDb.getReference().child("users").child(uid);
}
public User getUserData(){
initDb();
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
userData = dataSnapshot.getValue(User.class);
Log.w("UserData",userData.getExp() + userData.getUsername() + userData.getGender());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return userData;
}
}