不能访问datasnapshot.haschild()方法外类变量
问题描述:
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();
}
});
}
答
为了解决这个问题,请使用以下代码:
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);
其给予同样的错误 –
看到我更新的答案。 –
我已更新我的问题与我的数据库结构的图片,请检查它,并希望它可以帮助你.. –