【问题标题】:get the values of firebase firestore value获取firebase firestore值的值
【发布时间】:2021-02-03 13:34:08
【问题描述】:

我想获取 firebase firestore value 的值,但我不断收到错误,有没有办法在不添加“”的情况下检索这些值?

DocumentReference documentReference = fStore.collection("Users").document(UserID);
    documentReference.addSnapshotListener(this, new EventListener<DocumentSnapshot>() {
        @Override
        public void onEvent(@Nullable DocumentSnapshot value, @Nullable FirebaseFirestoreException error) {
            assert value != null;
            mBankBalance.setText(""+ value.getDouble("Balance"));

        }
    });

每当我删除双引号时,mBankBalance.setText(""+value.getDouble("Balance")) 行就会出错。有没有办法只获取值?

【问题讨论】:

  • 你能不能解释一下为什么我总是出错,或者是否可以只使用 value.getDouble()?
  • 如果应用程序崩溃,会有一个堆栈跟踪。请在 logcat 上查找,并将其添加到您的问题中。请编辑您的问题并将您的数据库结构添加为屏幕截图。请回复@AlexMamo

标签: java android google-cloud-firestore


【解决方案1】:

您已经获得了正确的值,但您不能将 Double 值设置为文本视图。

如果您将代码分成几行,您最容易看到这一点:

DocumentReference documentReference = fStore.collection("Users").document(UserID);

documentReference.addSnapshotListener(this, new EventListener<DocumentSnapshot>() {
    @Override
    public void onEvent(@Nullable DocumentSnapshot value, @Nullable FirebaseFirestoreException error) {
        assert value != null;
        Double balance = value.getDouble("Balance"));
        mBankBalance.setText(balance);
    }
});

使用此代码,mBankBalance.setText(balance); 会出错,而 Double balance = value.getDouble("Balance")); 实际上可以正常工作。

原因是setText() 只需要一个字符串值,它不会将您的Double 转换为字符串。这就是您原始代码中的 "" + 所做的,上面也一样:

mBankBalance.setText("" + balance);

如果您(理所当然地)不喜欢在您的代码中使用这样的空字符串,您也可以使用这种更明确的转换:

mBankBalance.setText(String.valueOf(balance));

【讨论】:

  • 感谢它运行良好,非常感谢!
  • 嘿@Jm25E。这里还需要什么吗?如果没有,我们将不胜感激。
  • 呃,网站说声望低于 15 人的投票会被记录下来,但不要更改公开显示的帖子得分。
猜你喜欢
  • 2020-09-10
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 2019-08-15
  • 1970-01-01
  • 1970-01-01
  • 2018-05-08
相关资源
最近更新 更多