如何在我的java类中将firebase值存储为全局整数[重复]

Posted

技术标签:

【中文标题】如何在我的java类中将firebase值存储为全局整数[重复]【英文标题】:How do I store a firebase value as an global integer in my java class [duplicate] 【发布时间】:2020-06-11 11:33:12 【问题描述】:

我已经被这个问题困扰了一段时间,我似乎无法解决它。我正在尝试通过在全局变量中使用“getValue”来存储数据库中的值。我想用这个变量来制作饼图(Anychart)。

这是我用来提取数据的代码。

我在代码顶部的 OnCreate 方法之外有一个变量,就像这样

int total_to;

问题是代码似乎没有将datasnapshot值存储在全局变量中,所以total_to值总是为零。任何帮助将不胜感激。请注意,我是 java 新手(放轻松;))

【问题讨论】:

正如彼得回答的那样:任何需要数据库数据的代码都需要内部 onDataChange 或从那里调用。见***.com/questions/50434836/… 【参考方案1】:

onDataChange 是异步的,这意味着onDataChange 之后的代码将在数据完全检索之前执行。因此,onDataChange 之外的 total_to 将为零。您需要执行以下操作来解决此问题:

 if (dataSnapshot.exists()) 
       Integer total = dataSnapshot.getValue(Integer.class);
       total_to = total;

       Pie pie = AnyChart.pie();
       List<DataEntry> data = new ArrayList<>();
       data.add(new ValueDataEntry("y", total_to) );
       data.add(new ValueDataEntry("x", 7) );
       pie.data(data);
       AnyChartView anyChartView = (AnyChartView)findViewById(R.id.piechart);
       anyChartView.setChart(pie);

【讨论】:

谢谢!这很有帮助。 如何使用数据更改快照之外的饼图解决它?我的代码有许多数据库引用,图表由多个条目组成。通过每个 db ref,total_to 将增加。

以上是关于如何在我的java类中将firebase值存储为全局整数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Android:从运行时生成的文本字段中将数据保存到Firebase

在android中将坐标传递给谷歌地图

如果我在我的 firebase 云功能中将请求的模式设置为“no-cors”,会发生啥?

如何在我的应用程序上显示来自 Firebase 存储的图像?

Firebase 存储图像被旋转

如何使用nodejs在对话流履行中将数据附加到firebase?