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
相关产品推荐
相关产品推荐

