You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase实时数据库数据读取异常:findTime函数问题排查与修复

问题:Firebase数据读取异常导致findTime函数无法找到合适日程日期

我编写的findTime函数逻辑为:遍历每位用户日程的前200天,逐个检查某天是否全员有空——用户当天有空则计数器递增,当计数器数值与用户总数匹配时,将指定事件添加至用户日程。但目前函数无法正确从Firebase实时数据库读取数据,导致功能失效。

函数代码

private void findTime(String eventName, int EventTime)
{
    Boolean dayFound = false;
    countNeeded = TheUserList.size();

    DaySearched = LocalDate.now();
    while (!dayFound) {
        for (int i = 0; i < 200; i++)
        {
            // currentCount记录当天有空的用户数量
            currentCount = 0;
            Toast.makeText(this, ("The first for loop has begun " + String.valueOf(currentCount)), Toast.LENGTH_SHORT).show();

            for (int e = 0; e < TheUserList.size(); e++)
            {
                String currentUser = TheUserList.get(e);
                Log.i("Firebase", Login.reference.child(currentUser).child(String.valueOf(DaySearched)).child("Time for day").toString());

                Login.reference.child(currentUser).child(String.valueOf(DaySearched)).child("Time for day").addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        int TimeForDay = snapshot.getValue(int.class);
                        if (TimeForDay + EventTime < 1441)
                        {
                            currentCount = currentCount + 1;
                        }
                        else
                        {
                            currentCount = 0;
                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError error) {
                        Toast.makeText(PlanEvent.this, "Failed to get Data", Toast.LENGTH_SHORT).show();
                    }
                });
            }
            if (currentCount == countNeeded)
            {
                Log.d("FindTime Function", "Found and available day at" + String.valueOf(DaySearched));

                Tasks newEvent = new Tasks(eventName, DaySearched, LocalTime.now(), EventTime);
                Day.enoughTimeChecker(DaySearched, EventTime, newEvent);
                dayFound = true;
            }
            DaySearched = DaySearched.plusDays(1);
        }
    }
}

排查情况

  • 已通过Toast验证while循环正常执行,但提示找到合适日期的Log从未触发,推测是无法读取Firebase数据导致判断逻辑失效。
  • 附Firebase实时数据库结构截图及Log.i()输出截图,请求协助排查问题。

内容的提问来源于stack exchange,提问作者Suf1an65

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:07:29