【问题标题】:Use android.icu.util.Calendar for API >=24 and java.util.Calendar for API <24对 API >=24 使用 android.icu.util.Calendar,对 API <24 使用 java.util.Calendar
【发布时间】:2018-08-20 03:41:45
【问题描述】:

在 API 24 中的 android.icu.util 包中引入了一个新的 Calendar 类,具有更多日历和更好的本地化。 我想知道是否有办法使用此日历 for Android API >=24,以及旧的不推荐使用的日历来自 java.util 包的 Android API

设置minSdkVersion = 24 是有原因的。 此外,我无法根据 API 级别将 android.icu.util.Calendar 分配给 java.util.Calendar 字段。 有没有人解决这个问题?还是只使用旧日历并等到旧设备上市?

【问题讨论】:

  • 为什么不采取措施将ThreeTenABP 添加到您的Android 项目中,以便您可以使用java.time, the modern Java date and time API?与它一起工作要好得多。说对android.icu.util.Calendar了解不多,但java.util.Calendar至少早已过时且设计不佳,我对icu的印象也不是很好。
  • 重点是什么?您的应用是否应该在 API 级别 24 及更高级别上运行时利用某些 ICU 功能,从而向用户提供在 API 级别 23 及更低级别上运行时不可用的功能?
  • 或者使用我的库 Time4A,它提供了良好的国际化(如 ICU4J)和更多质量更好的日历,即使与旧的 API 级别兼容。
  • @MenoHochschild 我没有找到任何关于许可证的内容,这很奇怪。
  • @OleV.V.也许这是一个很好的观点。但是出于什么原因,android 开发人员实现了 icu.Calendar?我不想迁移到 ThreeTen 的原因: 1. 不想要臃肿的 apk 2. 想要使用 Android 时区,而不是 IANA 的最新时区。我有另一个使用 Jodatime 的应用程序,因此给我带来了很多痛苦。

标签: java android calendar deprecated icu


【解决方案1】:

要在 Android 24 之前使用 icu.util.Calendar,您应该将 IBM 的库添加到您的 gradle 中:

implementation group: 'com.ibm.icu', name: 'icu4j', version: '69.1'

因此,您应该使用 com.ibm.icu.util.Calendar,而不是使用 android.icu.util.Calendar。

这个answer帮了我很多。

IBM 日历专家:https://mvnrepository.com/artifact/com.ibm.icu/icu4j

【讨论】:

    猜你喜欢
    • 2021-02-14
    • 1970-01-01
    • 2021-01-09
    • 2017-01-23
    • 1970-01-01
    • 2016-12-04
    • 2022-01-23
    • 1970-01-01
    • 2017-01-12
    相关资源
    最近更新 更多