【问题标题】:DateUtils.getRelativeTimeSpanString() fails with NullPointerException on Android 5DateUtils.getRelativeTimeSpanString() 在 Android 5 上因 NullPointerException 而失败
【发布时间】:2018-12-23 05:16:52
【问题描述】:

我在尝试将 DateUtils.getRelativeTimeSpanString(...) 与某些特定值一起使用时遇到了一个相当奇怪的问题。

我是这样使用它的:

private fun formatPubDate(pubDate: String): String {
   val dateFormat = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH)
   val date = dateFormat.parse(pubDate)
   val flags = DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_SHOW_TIME or DateUtils.FORMAT_SHOW_YEAR or DateUtils.FORMAT_ABBREV_MONTH

   return DateUtils.getRelativeTimeSpanString(date.time, System.currentTimeMillis(),
                DateUtils.MINUTE_IN_MILLIS, flags).toString()
}

为什么奇怪?由于以下代码按预期工作,打印到控制台“6 天前”:

Log.d("DATE_TAG", formatPubDate("Fri, 09 Jul 2018 07:04:05 +0000"))

但是,如果日期从 7 月 9 日更改为 7 月 8 日:

Log.d("DATE_TAG", formatPubDate("Fri, 08 Jul 2018 07:04:05 +0000"))

然后应用程序崩溃并出现以下异常:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.ContentResolver android.content.Context.getContentResolver()' on a null object reference
        at android.text.format.DateFormat.is24HourFormat(DateFormat.java:131)
        at android.text.format.DateUtils.formatDateRange(DateUtils.java:822)
        at android.text.format.DateUtils.formatDateRange(DateUtils.java:650)
        at android.text.format.DateUtils.formatDateRange(DateUtils.java:627)
        at android.text.format.DateUtils.getRelativeTimeSpanString(DateUtils.java:350)
        at test.com.recyclerviewwidth.MainActivity.formatPubDate(MainActivity.kt:26)
        at test.com.recyclerviewwidth.MainActivity.onCreate(MainActivity.kt:18)

到目前为止,该问题只能在 Android 5、三星设备和模拟器上重现(在 Android 8 和 7 上运行良好)。

有人知道这里可能出了什么问题吗?

【问题讨论】:

    标签: android datetime kotlin


    【解决方案1】:

    问题来自 FORMAT_SHOW_TIME 标志:我在这里有相同的 pb,并通过捕获异常并再次调用 DateUtil 方法没有 FORMAT_SHOW_TIME 标志以一种有点脏的方式修复它 /强>。

    【讨论】:

      猜你喜欢
      • 2011-12-30
      • 2019-05-01
      • 1970-01-01
      • 2015-12-19
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多