Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Problème accès DB Firebase

onDataChange() n'est jamais appelé

Sujet résolu
    24 avril 2021 à 20:36:59

    Bonjour, j'essaye actuellement de coder ma première vraie application android. J'ai connecté mon application à Firebase, mais lors de la lecture de cette base, je ne parviens pas à récupérer les données. Je code ici en Kotlin, mais c'est proche du Java (c'est simplifié), et je sais que sur ces fonctions, cela fonctionne exactement de la même manière. Voici la classe qui met à jour ma liste d'objets.

    class BudgetRepository {
    
        object singleton {
            val databaseRef = FirebaseDatabase.getInstance().getReference("budget")
            val budgetList = arrayListOf<BudgetModel>()
        }
    
        fun updateData(callback: () -> Unit) {
            Log.d("TAG","updateData: c'est parti")
            databaseRef.addValueEventListener(object : ValueEventListener {
                override fun onCancelled(error: DatabaseError) {
                    Log.d("TAG",error.toString())
                }
    
                override fun onDataChange(snapshot: DataSnapshot) {
                    Log.d("TAG","onDataChange: c'est parti")
                    budgetList.clear()
                    Log.d("TAG","juste avant la boucle")
                    for(ds in snapshot.children) {
                        val budget = ds.getValue(BudgetModel::class.java)
                        Log.d("TAG", "on est dans la boucle")
                        if (budget != null) {
                            Log.d("TAG", "on ajoute à la liste")
                            budgetList.add(budget)
                        }
                    }
                    Log.d("TAG","onDataChange: c'est fini")
                    callback()
                }
            })
            Log.d("TAG","updateData: c'est fini")
        }
    }

    La référence à cette classe est la suivante, dans le onCreate() de ma MainActivity :

    val repo = BudgetRepository()
    
    repo.updateData{
        //affichage du reste de mon appli
    }

    Tout ce que j'obtiens en console (après filtrage de mon TAG), c'est ça :

    D/TAG: updateData: c'est parti
    D/TAG: updateData: c'est fini

    J'en déduis donc que onDataChange() ne se lance pas, malgré l'appel de updateData() dans la MainActivity.

    Est-ce que qqun aurait une idée de pourquoi cet appel ne se passe pas comme prévu ? Et dans ce cas comment régler le problème ?

    Je précise que le build se passe sans problème, que l'application se lance correctement, mais sans les contenus provenants de la base de données.

    Merci d'avance !


    -
    Edité par RobinLUSSON 25 avril 2021 à 13:47:07

    • Partager sur Facebook
    • Partager sur Twitter

    [Android] Problème accès DB Firebase

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown