当前位置: 首页 > 知识库问答 >
问题:

返回一个值从文档快照Java /Android[复制]

劳昊明
2023-03-14

我需要返回从文档快照中检索到的值。我可以在日志中看到正确的值,但由于它超出了范围,并且只有在onComplete中,我无法访问它<你能帮忙吗?

public String getCoEmail() {
    coUserReference = db.collection("users").document(email);
  
    coUserReference.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
               if (task.isSuccessful()) {
               DocumentSnapshot document = task.getResult();
               if (document.exists()) {
                  String coEmail = document.getString("coEmail");
                  Log.d(TAG, "DocumentSnapshot data: " + document.getString("coEmail"));
                    } else {
                        Log.d(TAG, "No such document");
                    }
                } else {
                    Log.d(TAG, "get failed with ", task.getException());
                }
            }
        });
    return coEmail;
}

共有2个答案

范弘亮
2023-03-14

数据是异步加载的,并且您的主代码会继续加载。这意味着您的返回coEmail现在运行在coEmail=document.getString("coEmail")之前,即使您要修复作用域问题。

解决方案是确保所有需要数据的代码都在onComplete方法中,或者从那里调用。有关详细示例,请参阅:如何检查firestore或firestore OncompleteListener中是否已存在特定数据

濮阳繁
2023-03-14

在Logo. d之后返回:

Log.d(TAG, "DocumentSnapshot data: " + document.getString("coEmail"));
return document.getString("coEmail");
 类似资料:
  • 问题内容: 我的android类中有以下线程。我如何从线程中获取err的值??? 我希望该值是方法的返回值,但是对于我一生来说,我无法获得该值… 问题答案: 您可以通过两种方式实现这一目标。 在 糟糕的 方式。创建一个可变对象,如整数 列表 ,然后让Thread(可运行)写入列表。您可以在外部类/方法的列表中访问值。 使用而不是。一个可以返回值

  • 问题内容: 如何快速从函数返回3个相同类型(Int)的单独数据值? 我试图返回一天中的时间,我需要将小时,分钟和秒作为单独的整数返回,但是所有这些都来自同一个函数,这可能吗? 我想我只是不了解返回多个值的语法。这是我正在使用的代码,我在last(return)行上遇到了麻烦。 任何帮助将不胜感激! 问题答案: 返回一个元组: 然后将其调用为: 要么:

  • 我正在尝试从Firebase的DocumentSnapshot中获取数据。 此方法完全正常并返回true,但是: 返回false... 有人有想法吗,为什么会这样?这只是我申请中的一个小问题,但我很好奇为什么会这样。只是为了理解。谢谢你! 编辑: 以下是购物车集合的屏幕截图: 以下是产品集合的屏幕截图:

  • 在下面的示例中,someObjects是一个集合。如果循环中的条件匹配,我试图返回true,但这似乎无法编译。然而,当我添加“return”时,它工作得很好。我需要解决的问题是什么? 编译错误 类型Iterable中的方法forEach(Consumer)不适用于参数((obj)->{})

  • 问题内容: 这可以返回一个字符串: 但是我无法获取返回的html文档。这不起作用: 很抱歉成为菜鸟! 编辑: 我已经在单独的文档中使用了html。所以我需要返回文档,或者以某种方式读取/解析它,所以我不只是重新输入所有的html … 编辑: 我的web.xml中有这个 还有其他我可以放的东西,所以它只是返回一个文件,例如… 问题答案: 您可以从Servlet本身 打印 HTML (不建议使用) 或

  • 如果我有一个Firebase Firestore数据库,我已为右侧集合对应的文档检索到文档快照,并存储在文档变量中,那么我如何在“用户名”字段检索该文档快照中的值?该字段具有字符串值。