gpt4 book ai didi

android - 从 valueEventListener java 返回值

转载 作者:行者123 更新时间:2023-11-29 14:35:38 24 4
gpt4 key购买 nike

我试图返回一个 bool 值,但返回的值始终为 false,即在本例中为 0。

检查变量是一个实例变量,按下按钮时将调用以下函数。

private boolean checkAnswerSubmission() {

DatabaseReference answerDatabase = FirebaseDatabase.getInstance().getReference().child("userPuzzleHistory").child(uid);
answerDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild(String.valueOf(imagename))) {
check = 1;
} else {
check = 0;
}
//here the value check is working fine but the value cannot be returned from here.
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
//here the value returned is always 0
if (check == 1)
return true;
else
return false;

}

最佳答案

与所有异步操作一样,我经常以回调方式进行。

您的解决方案可以像这样工作:

  1. 创建一个简单的回调接口(interface)(我在几乎每个应用程序中使用的库中都有我的回调接口(interface))

    public interface SimpleCallback {
    void callback(Object data);
    }

    // You could do it as well generic, that's what I do in my lib:
    public interface SimpleCallback<T> {
    void callback(T data);
    }

然后像这样重新设计方法的签名:

private void checkAnswerSubmission(@NonNull SimpleCallback<boolean> finishedCallback) {

DatabaseReference answerDatabase = FirebaseDatabase.getInstance().getReference().child("userPuzzleHistory").child(uid);
answerDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This will simple call your callback containing a boolean true/false
finishedCallback.callback(dataSnapshot.hasChild(String.valueOf(imagename)));
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}

你调用它:

checkAnswerSubmission(new SimpleCallback<boolean>() {
@Override
void callback(boolean data) {
if (data) {
// true was returned
} else {
// false was returned
}
}
});

关于android - 从 valueEventListener java 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42128909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com