2 votes

Impossible de lire la base de données Firebase

Voici mon code pour lire les données de Firebase :

final String[] booknum = {"0"};
    databaseReference.child("All BID").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            booknum[0] =Long.toString(snapshot.getChildrenCount());
            Toast.makeText(getApplicationContext(), booknum[0],Toast.LENGTH_LONG).show();

        }
        @Override public void onCancelled(DatabaseError databaseError) {
            Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
        }
    });
    Toast.makeText(getApplicationContext(), booknum[0],Toast.LENGTH_LONG).show();

Lorsque je l'exécute, le premier toast (à l'intérieur de ValueEventListener) affiche la bonne réponse (par exemple '8'). Mais le toast à l'extérieur affiche toujours 0, quoi qu'il arrive.

Aidez-nous !

0voto

Pat Myron Points 620

Le ValueEventListener est asynchrone. Les lignes de code à l'intérieur de l'écouteur, y compris l'affectation de booknum[0], ne sont pas garanties de s'exécuter avant les lignes de code écrites à l'extérieur de l'écouteur. Si vous dépendez de la nouvelle valeur de booknum[0] pour une opération, envisagez de déplacer cette opération dans onDataChange() pour vous assurer qu'elle utilise la nouvelle valeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X