我有这个代码
public String getPoolValue() {
final DocumentReference docRef = database.collection("pool").document("bq2a7gLnz9bpEyIyQeNz");
docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
Pool pool = documentSnapshot.toObject(Pool.class);
valueOfPool=String.valueOf(pool.getValue());
}
});
return valueOfPool;
}
然后发生的事情是,它通过这段代码,不经过onSuccess块就立即返回valueOfPool,然后经过第二次并进入onSuccess块。由于我将pool的值返回给活动,因此该活动永远不会获得实际值。
get()方法是异步的,这意味着return语句将在之前执行onSuccessListener,这就是为什么您没有获得实际值的原因。因此,如果您在另一个活动中使用此值,则可以使用Intent并在onSuccessListener新活动的内部启动:
Intent intent = new Intent(getBaseContext(), Activity.class);
intent.putExtra("value", valueOfPool);
startActivity(intent);
`
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。