例如,如果数据存在则在圆圈中搜索用户圈我希望它处理过程1并且如果数据不存在我希望它创建一个然后DO过程2 ...但是如果数据不存在则会在此代码中发生什么存在它将创建一个然后执行过程2然后返回然后检查后执行过程1.所以如何在进程2之后停止监听器.对不起,如果圆圈示例太模糊,但这是我能想到的最简单的例子.
Firebase ref= new Firebase("https://XXXXX.firebaseio.com/circles/");
Query queryRef = ref.orderByChild("circalename").equalTo(user.circalename);
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot datasnapshot) {
if (datasnapshot.exists()) { // I don't want to get back here after
//creating the data in the else statement
// DO process 1
}
// if my data doesnt exist I will create one after that STOP listening
else {
// create circle
// do process 2
}
}
Run Code Online (Sandbox Code Playgroud) 所以我试图通过他们的电子邮件获取用户密钥,问题是我在我的代码中不知道如果查询实际上发现了某些东西或者没有...所以我假设如果我在onchilddded中查询成功并且一个孩子已被发现,所以我将密钥传递给另一个活动并停止当前活动,但当我运行应用程序时,整个代码被执行..我觉得我的方式有点错,但我没有找到任何方法来知道是否查询是成功的还是找到了孩子....如果你有任何想法请求帮助......
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
}
Run Code Online (Sandbox Code Playgroud)
输出:如果发现电子邮件 - >吐司将显示然后家庭活动将开始...如果未找到电子邮件 - >只有吐司将显示..