我正在尝试在我的Android应用程序中使用java.time.LocalDate,但是如果我尝试导入它,则java.time中的任何类都会在Android Studio 1.1中无法解析符号错误
我能解决这个问题的唯一原因是它不支持java 8.真的是这样吗?
答案 0 :(得分:14)
Android API级别26获得了 java.time 的实现,包括您的LocalDate
类。
对于Android< 26,替代方案包括:
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*
类。
从哪里获取java.time类?
答案 1 :(得分:5)
是的,Android不支持Java-8。关于Java-8中包含的新日期/时间API,您可以查看此问题:
http://code.google.com/p/android/issues/detail?id=62192
目前还没有计划在谷歌Android中引入JSR-310(java.time-package)。
答案 2 :(得分:2)
最后日期/时间 - Java 8中包含的API被添加到最近发布的Android API级别26中。
答案 3 :(得分:0)
由于 API 脱糖支持(Android Gradle 插件 4.0.0+),您现在可以使用 java.time API 和其他 Java 8+ API,而无需为您的应用设置最低 API 级别
https://developer.android.com/studio/write/java8-support#library-desugaring
简而言之,您必须使用 Android Gradle 插件 4.0.0 或更高版本,并在您的 compileOptions 中包含 coreLibraryDesugaringEnabled true
android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled true
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}