so I'm trying to get users key by their email and the problem is that I dont know inside my code if the query actually found something or not .. so I'm assuming if I'm inside onchildadded that the query is successful and a child has been found so I will pass the key to another activity and stop current activity but when I run the app the whole code get executed .. I feel my way is kinda wrong but I didn't find any way to know if the query is sucsessful or a child is found .... if you have any idea pleas help ...
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 : if email found -> toast will show then home activity will start... if email not found -> only toast will show..
The methods of a ChildEventListener get called when the relevant event happened. So onChildAdded() will be called when a child has been added. For this reason you cannot easily use a ChildEventListener to detect if a child exists.
The easiest way to detect if a child exists, is to use a 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);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With