java - 如何知道 firebase ChildEventListener 是否找到了 child ? [安卓]

标签 java android firebase event-listener

所以我试图通过他们的电子邮件获取用户 key ,问题是我不知道我的代码内部是否查询确实找到了某些东西..所以我假设我是否在 onchildadded 中查询成功并且找到了一个 child 所以我将把 key 传递给另一个 Activity 并停止当前 Activity 但是当我运行应用程序时整个代码都会被执行..我觉得我的方式有点错误但我没有找到任何方法知道查询是否成功或找到 child ....如果您有任何想法请帮助...

  public void searchemail(String email){

  Firebase ref = new Firebase("https://<myfirebase>.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  
   }

输出: 如果找到电子邮件 -> toast 将显示然后家庭 Activity 将开始...... 如果找不到电子邮件 -> 只会显示 toast..

最佳答案

ChildEventListener 的方法在相关事件发生时 被调用。因此 onChildAdded() 将在 添加了一个 child 时被调用。出于这个原因,您无法轻松地使用 ChildEventListener 来检测 是否存在 child 。

检测 child 是否存在的最简单方法是使用 ValueEventListener:

public void searchemail(String email){

  Firebase ref = new Firebase("https://<myfirebase>.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);
}

关于java - 如何知道 firebase ChildEventListener 是否找到了 child ? [安卓],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35521884/

相关文章:

android - Paypal Android SDK 是否支持并行、链式支付?

ios - 如何为 Swift 更新 Firebase 数据?

node.js - 如何通过 Dialogflow 中的内联编辑器将 Dialogflow 连接到 Cloud Firestore?

android - 从远程服务器下载 APK。推送通知链接

firebase - 如何在 Flutter 中手动分配 Listview.builder 的第一个元素?

java - 无法使用 Eclipse 编译简单的 Google api Android 应用程序

<T extends A<T>> 和 Inheritance 形式的 Java 泛型

java - 在 Swing GUI 中处理异常

java - 无法从网页读取 html

android - 更改安卓 :installLocation from preferExternal to internalOnly