2017-10-20 5 views
0

This is my datbase treene peut pas accéder à la variable de la classe externe pour la méthode datasnapshot.haschild()

le ci-dessous est mon code pour vérifier si ma base de données a un enfant avec un nombre stocké dans la variable num.

Je ne peux pas accéder à num variable addListenerForSingleValueEvent

voici mon code. Merci d'avance.

mDatabase = FirebaseDatabase.getInstance().getReference(); 


public String nam,num; 

for(contacts e : mylist) 
    { 


     num = e.getPhoneNumber(); 
     nam = e.getName(); 

     check(nam,num); 

    } 
public void check(final String nam, final String num) 
{ 



    mDatabase.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      if(dataSnapshot.hasChild(num)) //this line is giving error 
       Toast.makeText(getActivity(),num,Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

      Toast.makeText(getActivity(),"some error",Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

Répondre

0

Pour résoudre ce problème, s'il vous plaît utilisez le code suivant:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference numberRef = rootRef.child(num); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     if(dataSnapshot.exists()) { 
      Log.d("TAG", "Number exists!"); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
numberRef.addListenerForSingleValueEvent(eventListener); 
+0

son donnant la même erreur –

+0

Voir ma réponse à jour. –

+0

J'ai mis à jour ma question avec l'image de ma structure db, s'il vous plaît vérifier et j'espère que cela vous aide .. –