无法访问datasnapshot.haschild()方法

时间:2017-10-20 13:54:14

标签: android firebase firebase-realtime-database

This is my datbase tree

以下是我的代码,用于检查我的数据库是否有一个存储在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();
         }
     });
 }

1 个答案:

答案 0 :(得分: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);