【发布时间】:2022-01-16 07:49:51
【问题描述】:
我一直在为基于 Kotlin 的 Android 应用程序使用 DateTime 选择器而没有任何问题,直到我注意到在使用 DateTime 选择器时应用程序崩溃了。在进一步的测试中,我发布它主要是在 1 月份崩溃,并突出显示以下错误。我尝试从 Java 1.8 迁移到 1.7,但随后我失去了应用程序中的其他功能......关于如何克服这个问题的任何建议?这似乎是一个已知问题,但我无法找到原因/正确的解决方案
应用程序在从日历中获取 YearMonth 时崩溃
val currentMonth = YearMonth.of(
calendar.get(java.util.Calendar.YEAR),
calendar.get(java.util.Calendar.MONTH)
)
Fatal Exception: java.time.DateTimeException: Invalid value for MonthOfYear (valid values 1 - 12): 0
at java.time.temporal.ValueRange.checkValidValue(ValueRange.java:311)
at java.time.temporal.ChronoField.checkValidValue(ChronoField.java:730)
at java.time.YearMonth.of(YearMonth.java:221)
at in.latom.latom.MainActivity.onCreate$lambda-11$lambda-10(MainActivity.kt:505)
at in.latom.latom.MainActivity.$r8$lambda$fB3ERyY00fXDUSdrgD0tpQQiN-Y()
at in.latom.latom.MainActivity$$ExternalSyntheticLambda11.onDateSet(:8)
at android.app.DatePickerDialog.onClick(DatePickerDialog.java:173)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:188)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8595)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
【问题讨论】:
-
方法期望值从 1 到 12 并且您在 1 月份发送 0。如果将传递给方法的值增加一,它应该可以解决问题。
-
Java 通过 DateTimePicker 提供的值 0 此时应用程序崩溃 - val currentMonth = YearMonth.of( calendar.get(java.util.Calendar.YEAR), calendar.get( java.util.Calendar.MONTH) )
-
你不应该使用
Calendar。它已经过时,也令人困惑,因为它是这里问题的原因。 -
您建议我可以探索的任何替代方案? java.time 是否适合使用?抱歉,我是新手,我在这里偷偷摸摸
标签: java android kotlin datetimepicker