gpt4 book ai didi

android - DateUtils.getRelativeTimeSpanString() 在 Android 5 上因 NullPointerException 而失败

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:27 24 4
gpt4 key购买 nike

我在尝试将 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"))

但是,如果日期从 09 Jul 更改为 08 July:

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 上运行良好)。

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

最佳答案

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

关于android - DateUtils.getRelativeTimeSpanString() 在 Android 5 上因 NullPointerException 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51348589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com