开发者社区> 问答> 正文

如何将FireStore逻辑分为自己的类

我有这个代码

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的值返回给活动,因此该活动永远不会获得实际值。

展开
收起
垚tutu 2019-12-12 09:43:34 824 0
1 条回答
写回答
取消 提交回答
  • #include

    get()方法是异步的,这意味着return语句将在之前执行onSuccessListener,这就是为什么您没有获得实际值的原因。因此,如果您在另一个活动中使用此值,则可以使用Intent并在onSuccessListener新活动的内部启动:

    Intent intent = new Intent(getBaseContext(), Activity.class);
    intent.putExtra("value", valueOfPool);
    startActivity(intent);
    
    

    `

    2019-12-12 09:43:48
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
继承与功能组合 立即下载
fibjs 模块重构从回调到协程--陈垒 立即下载
ui-model,跨框架复用 立即下载

相关实验场景

更多