所以我试图通过他们的电子邮件获取用户密钥,问题是如果查询实际上发现了某些内容,我不知道我的代码内部。所以我假设我是这样做的'在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;只有吐司会显示..
答案 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