Firebase 在Firestore中创建具有电子邮件和密码的用户时,如何从OnCompleteListener返回值?
我要写的代码是Firebase 在Firestore中创建具有电子邮件和密码的用户时,如何从OnCompleteListener返回值?,firebase,android-studio,google-cloud-firestore,Firebase,Android Studio,Google Cloud Firestore,我要写的代码是 private String val; public String checkEmail(){ FirebaseFirestore db = FirebaseFirestore.getInstance(); db.collection("cities").whereEqualTo("cities", "Boston").get() .addOnCompleteListener(new OnCompleteL
private String val;
public String checkEmail(){
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("cities").whereEqualTo("cities", "Boston").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
val = "City exists";
}else{
val = "City does not exist";
}
}
});
return val;
}
此代码将val返回为null,而不是值。如何解决此问题?我确信这是因为调用是异步的,请将方法更改为non-return value void,并创建一个接口回调,以便在调用完成时返回值。试试这个
interface CityCallback {
void isCityExist(boolean exist);
}
public void checkEmail(CityCallback cityCallback){
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("cities").whereEqualTo("cities", "Boston").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
cityCallback.isCityExist(true);
}else{
cityCallback.isCityExist(false);
}
}
});
}
我希望它能帮助您我确信这一点,因为调用是异步的,请将您的方法更改为non-return value void,并创建一个接口回调,以便在调用完成时返回值。试试这个
interface CityCallback {
void isCityExist(boolean exist);
}
public void checkEmail(CityCallback cityCallback){
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("cities").whereEqualTo("cities", "Boston").get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
cityCallback.isCityExist(true);
}else{
cityCallback.isCityExist(false);
}
}
});
}
我希望它能帮助你