2016-02-20 32 views
1

所以我想通過他們的電子郵件獲取用戶密鑰,問題是我不知道我的代碼內部,如果查詢實際上發現了一些事情或沒有..所以我假設如果我在onChildadded查詢成功並且找到了一個孩子,所以我會將密鑰傳遞給另一個活動並停止當前活動,但是當我運行該應用程序時,整個代碼都會被執行。我覺得我的方式有點不對勁,但是我沒有找到任何要知道這樣,如果查詢是sucsessful或孩子被發現....如果你有任何想法的請求幫助...如何知道firebase ChildEventListener是否發現孩子? [android]

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 
    } 

OUTPUT: 如果電子郵件中 ​​- >吐司將顯示,然後回家活動將啓動... 如果沒有找到電子郵件 - >只有烤麪包會顯示..

回答

5

當發生相關事件時,ChildEventListener的方法被稱爲。所以onChildAdded()將被稱爲一個孩子已被添加。因此,如果兒童存在,則不能輕易使用ChildEventListener來檢測

如果孩子存在檢測最簡單的方法,是使用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); 
} 
+1

非常感謝哥哥這正是我想要的東西.... – toix12345

+1

感謝您的! – Vinod

相關問題