如何知道firebase的ChildEventListener是否找到了孩子? [机器人]

时间:2016-02-20 10:24:23

标签: java android firebase event-listener

所以我试图通过他们的电子邮件获取用户密钥,问题是如果查询实际上发现了某些内容,我不知道我的代码内部。所以我假设我是这样做的'在mychild内部,查询成功并找到了一个子项,所以我将密钥传递给另一个活动并停止当前活动,但是当我运行应用程序时,整个代码都被执行了......我觉得我的方式有点不对,但我没有找不到任何方法可以知道查询是否成功或是否找到了孩子....如果您有任何想法请求帮助......

  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  
   }

输出: 如果找到电子邮件 - &gt;吐司将显示然后家庭活动将开始... 如果找不到电子邮件 - &gt;只有吐司会显示..

1 个答案:

答案 0 :(得分:5)

当发生相关事件时,public static void solve() throws IOException { String s = (new BufferedReader (new InputStreamReader (System.in))).readLine(); int l = s.length(), d = 0; // d is number of substrings divisible by 4 BigInteger f = new BigInteger("4"); for(int i = 0; i < l; i++) { for(int j = i + 1; j <= l; j++) { String te = (s.substring(i,j)).replaceFirst("^0+(?!$)", ""); //regex used for leading zeros if( te.charAt(te.length()-1) == '3' || te.charAt(te.length()-1) == '5' || te.charAt(te.length()-1) == '7' || te.charAt(te.length()-1) == '9' ) continue; else { BigInteger temp = new BigInteger(te); if ( (temp.mod(f)).toString().equals("0") ) d++; } } } System.out.println( d ); } 的方法被称为。因此,当添加了一个孩子时,ChildEventListener将被称为。因此,如果存在子项,则无法轻松使用onChildAdded()来检测

检测孩子是否存在的最简单方法是使用ChildEventListener

ValueEventListener