removeEventListener ne pas enlever l'écouteur de firebase

Je veux supprimer addValueEventListener auditeur à partir d'une firebase réf lorsque la valeur est true.

ValueEventListener valueListener=null;

private void removeListener(Firebase fb){
    if(valueListener!=null){
        **fb.removeEventListener(valueListener);**
    }
}

String key="https://boiling-heat-3083.firebaseio.com/baseNodeAttempt/" + userId+"/"+nodeType+"/"+nodeId+"/data";
final Firebase fb = new Firebase(key);
valueListener=fb.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snap) {
        final HashMap<String, Object> data=(HashMap<String, Object>) snap.getValue();
        if( data.get("attemptFinish_"+nodeId)!=null){
            boolean title = (boolean) snap.child("attemptFinish_"+nodeId).getValue();
            if(title){
                removeListener(fb);
            }
        }
    }
    @Override
    public void onCancelled() {
        //TODO Auto-generated method stub
    }
});

Mais addValueEventListener n'est pas retirée, et elle est appelée pour que firebase réf . Merci donc de me suggérer comment faire pour supprimer l'auditeur de toute firebase ref si nécessaire.

Votre valueListener est toujours null
Vous pouvez enlever l'écouteur de dans le rappel avec if (title) { fb.removeEventListener(this); }. Sans rapport: la plupart des lecteurs de ce code va supposer que title est une Chaîne de caractères. Vous pouvez utiliser un nom de variable qui est un peu plus intuitif à interpréter comme une valeur booléenne, par exemple isFinished.
valueListener a une référence lorsque l'écouteur est ajouté @talex

OriginalL'auteur Keshav | 2015-06-22