【发布时间】:2017-08-31 13:12:17
【问题描述】:
我正在尝试在我的应用程序中使用joda-time-android,同时还使用 proguard。问题是,当我尝试从这样的 Intent 获取 LocalDate 时:
LocalDate date = (LocalDate) data.getSerializableExtra("dueDate");
我收到此错误:
Process: org.mpardalos.homeworkmanager, PID: 7509
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {org.mpardalos.homeworkmanager/org.mpardalos.homeworkmanager.TaskList}: java.lang.NullPointerException
at android.app.ActivityThread.deliverResults(ActivityThread.java:3389)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3432)
at android.app.ActivityThread.access$1300(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1253)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at org.joda.time.LocalDate.isSupported(LocalDate.java:577)
at org.joda.time.format.DateTimeFormatterBuilder$PaddedNumber.printTo(DateTimeFormatterBuilder.java:1434)
at org.joda.time.format.DateTimeFormatterBuilder$Composite.printTo(DateTimeFormatterBuilder.java:2446)
at org.joda.time.format.DateTimeFormatter.print(DateTimeFormatter.java:663)
at org.joda.time.base.AbstractPartial.toString(AbstractPartial.java:412)
at org.mpardalos.homeworkmanager.TaskList.onActivityResult(TaskList.java:91)
at android.app.Activity.dispatchActivityResult(Activity.java:5423)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3385)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3432)
at android.app.ActivityThread.access$1300(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1253)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5146)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
at dalvik.system.NativeStart.main(Native Method)
调试器会这样说变量:
Method threw 'java.lang.NullPointerException' exception.
但是,一旦我从 gradle 构建文件中删除 minifyEnabled,问题就会消失。
我发现的唯一临时解决方案是禁用 proguard,因为应用程序相对较小(2 MB 没有 proguard - 0.9 MB)但我确实计划添加更多功能,所以我需要 以后会的。
谁能指出我的问题的解决方案?
TL;DR joda-time-android 在启用 proguard 时不起作用
【问题讨论】:
标签: java android proguard jodatime