【问题标题】:Crash with this message: java.lang.ClassCastException: com.google.firebase.Timestamp cannot be cast to java.util.Date出现此消息崩溃:java.lang.ClassCastException: com.google.firebase.Timestamp 无法转换为 java.util.Date
【发布时间】:2019-07-06 09:30:16
【问题描述】:

我是 android studio 的新手,我正在使用 firebase 处理其他人的旧项目,在更新到更新的包(包括 firebase 包)并迁移到 androidx 后,我收到了消息

java.lang.ClassCastException: com.google.firebase.Timestamp cannot be cast to java.util.Date

发生这种情况的一个地方是这样的一行:

Date lessonDate = course.lessonDates.get(i);

另一个 Stackoverflow 答案建议更改 .get(i);到 .getTimestamp(i).toDate();但是当我尝试这样做时,我得到“无法解析方法 getTimestamp(int)。为了清楚起见,传递了一个 int,因为它是来自 firebase 的数组。我怎样才能解决所有这些日期问题?

对不起,如果我的术语不正确,我是新手。

【问题讨论】:

  • 您的时间戳参数的名称是什么?以及如何编写时间戳

标签: android android-studio


【解决方案1】:

Firebase TimeStamp 类有一个 toDate() 方法,该方法返回一个 Date 类型。这可能会解决您的问题:

Date lessonDate = course.lessonDates.get(i).toDate();

请谨慎使用,因为它在文档中提到它可能会失去精度: https://firebase.google.com/docs/reference/android/com/google/firebase/Timestamp.html#toDate()

【讨论】:

  • 当我这样做时,toDate 会以红色突出显示“无法解析方法 toDate”
  • 什么是“course.lessonDates.get(i)”返回?如果 toDate() 无法解析,这行代码似乎没有返回 firebase Timestamp。你能显示一些与这一行相关的额外代码行吗?
  • 我相信上下文是我想从 firebase 检索有关要显示的课程的信息。所以我有一个从 0 到 course.lessons.size() 的 for 循环; , 和课程课程 = course.lessons.get(i);日期课程日期 = course.lessonDates.get(i);整数周数 = course.lessonWeekNumbers.get(i);只有中间那个会返回那个错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
  • 2016-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多