如何知道firebase的ChildEventListener是否找到了孩子?

所以我试图通过他们的电子邮件获得用户密钥,问题是我在我的代码中不知道如果查询实际上发现了什么或者没有…所以我假设如果我在onchilddded中查询是成功的一个孩子被发现所以我会把钥匙传递到另一个活动并停止当前的活动,但是当我运行应用程序时,整个代码被执行..我觉得我的方式有点错,但我没有找到任何方法来知道是否查询是成功的还是找到了孩子….如果你有任何想法请求帮助……

public void searchemail(String email){ Firebase ref = new Firebase("https://.firebaseio.com/users"); Query queryRef = ref.orderByChild("Email").equalTo(email); ChildEventListener listener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { userkey = dataSnapshot.getKey(); homeintent.putExtra("key", userkey); startActivity(homeintent); finish(); return; // I want code to stop here }} queryRef.addChildEventListener(listener); Toast toast = Toast.makeText(this, "email not found", Toast.LENGTH_SHORT); // Im assuming if Im here then no child is found but this always get executed before startactivity } 

输出:如果发现电子邮件 – >吐司将显示,那么家庭活动将开始…如果未找到电子邮件 – >只有吐司将显示..

发生相关事件时,将调用ChildEventListener的方法。 因此,在添加子项将调用onChildAdded() 。 因此,您无法轻松使用ChildEventListener来检测ChildEventListener 是否存在。

检测子项是否存在的最简单方法是使用ValueEventListener

 public void searchemail(String email){ Firebase ref = new Firebase("https://.firebaseio.com/users"); Query queryRef = ref.orderByChild("Email").equalTo(email); ValueEventListener listener = new ValueEventListener() { @Override public void onDataChanged(DataSnapshot snapshot) { if (snapshot.exists()) { for (DataSnapshot child: snapshot.getChildren()) { homeintent.putExtra("key", child.getKey()); startActivity(homeintent); break; // exit for loop, we only want one match } } else { Toast toast = Toast.makeText(this, "email not found", Toast.LENGTH_SHORT); } } }; queryRef.addValueEventListener(listener); }