J'ai un fragment, quand mon fragment commence, j'ai besoin d'interroger ma base de données temps réel firebase. J'ajoute directement le code de connexion à la base de données lors de l'exécution de la méthode onCreate, je reçois toujours la valeur null lors de l'impression du toast.Récupérer des données de la base de données lors de la création de la classe
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View r = inflater.inflate(R.layout.friends, container, false);
FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
FirebaseDatabase db = FirebaseDatabase.getInstance();
String userEmail = user.getEmail();
DatabaseReference userDetails = db.getReference("users").child(userEmail);
userDetails.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
myUser = dataSnapshot.getValue(User.class);
postCount = myUser.getTotalPosts();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Toast.makeText(getActivity(), "jjjjj " + postCount, Toast.LENGTH_SHORT).show();
Donc ce que je ne faisais que j'ai essayé envelopper toute la connexion de base de données et récupérer le code dans un bloc statique, car cela devrait fonctionner d'abord quand la classe est créée
static{
// everything in here from above code excluding the toast
}
J'ai ensuite essayé d'imprimer postCount encore à l'intérieur de onCreateView()
mais toujours obtenir le même résultat où postCount est nul
Comment puis-je surmonter cela?
grâce
PS Je suis sûr que le nœud que je suis à l'écoute sur existe dans la base de données
Il est évident que vous devez utiliser cette valeur lorsque est réglé. Évidemment, il est situé à l'intérieur d'ondatachange – Selvin