2017-10-20 31 views
0

This is my datbase tree不能访问datasnapshot.haschild()方法外类变量

下面是我的代码,以检查是否我的数据库有与存储在num变量指定数目的子项。

我无法访问addListenerForSingleValueEvent

num变量这里是我的代码。 在此先感谢。

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(); 
     } 
    }); 
} 

回答

0

为了解决这个问题,请使用以下代码:

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

其给予同样的错误 –

+0

看到我更新的答案。 –

+0

我已更新我的问题与我的数据库结构的图片,请检查它,并希望它可以帮助你.. –