J'ai une application qui, à un moment donné, récupère une variable de la base de données Firebase en utilisant la méthode Query#addListenerForSingleValueEvent()
. Le code est le suivant:Obtenir un accès à une variable après que onDataChange l'ait récupéré
void initCurrentUserProfile() {
mAuth = FirebaseAuth.getInstance();
mUser = mAuth.getCurrentUser();
mFirebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference userProfileReference = mFirebaseDatabase.getReference().child("users");
userProfileReference = userProfileReference.child(mUser.getUid());
Query userProfileQuery = userProfileReference.orderByKey();
userProfileQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This is the variable that I want to get
mUserProfile = dataSnapshot.getValue(UserProfile.class);
}
...
Je veux obtenir un accès à mUserProfile
, qui est une classe avec les données de l'utilisateur tout de suite dans le onCreate()
de mon activité et charger l'image dont l'URL est contenue dans cette mUserProfile
variable.
@Override
protected void onCreate(Bundle savedInstanceState) {
...
initCurrentUserProfile();
Picasso.with(this).load(Uri.parse(mUserProfile.getProfilePicUrl())).into(mProfilePictureImageView);
}
Le problème est, en raison de la nature asynchrone de la base de données Firebase, je ne peux pas le faire et obtenir un NullPointerException
:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.grigori.fitnessapp.Profile.UserProfile.getProfilePicUrl()' on a null object reference
Avez-vous des suggestions quant à ce que je pourrais faire pour avoir accès à cette variable?
Merci beaucoup, cela a résolu le problème. –