【发布时间】:2015-03-02 13:29:55
【问题描述】:
有一个枚举:
public static enum CheckResult {
NONEEDTOUPDATE,
FORCEUPDATE,
OPTIONALUPDATE;
public boolean hasNewVersion() {
return this != NONEEDTOUPDATE;
}
}
并将其放入另一个类:
public static class UpdateData implements Serializable {
public static final String BUNDLE_KEY = "UpdateData";
private static final long serialVersionUID = 7956542923164822779L;
public String apkDownloadUrl;
public String newVersionName;
public CheckResult checkResult;
}
并使用捆绑发送它:
Intent intent = new Intent(context, UpdateActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable(UpdateData.BUNDLE_KEY, data);//data is an UpdateData instance
intent.putExtras(bundle);
context.startActivity(intent);
会引发异常。
Logcat:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.tencent.game3366.update.UpdateChecker$UpdateData)
android.os.Parcel.writeSerializable(Parcel.java:1323)
android.os.Parcel.writeValue(Parcel.java:1271)
android.os.Parcel.writeArrayMapInternal(Parcel.java:618)
android.os.Bundle.writeToParcel(Bundle.java:1692)
android.os.Parcel.writeBundle(Parcel.java:643)
android.content.Intent.writeToParcel(Intent.java:7410)
android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2297)
android.app.Instrumentation.execStartActivity(Instrumentation.java:1437)
android.app.Activity.startActivityForResult(Activity.java:3516)
android.app.Activity.startActivityForResult(Activity.java:3477)
android.support.v4.app.FragmentActivity.startActivityForResult(Unknown Source)
android.app.Activity.startActivity(Activity.java:3719)
android.app.Activity.startActivity(Activity.java:3687)
如果我只是将枚举更改为:
public static enum CheckResult {
NONEEDTOUPDATE,
FORCEUPDATE,
OPTIONALUPDATE
}
一切正常,为什么会这样?
更新
当我重建整个项目时,没有出现异常............我该怎么说......
【问题讨论】:
-
请给出一个带有相应堆栈跟踪的可重现示例。
-
为我工作,如果我删除
static关键字,我可以编译你的枚举。 -
你能告诉我们你在哪里声明和初始化
data吗?我无法重现这个。 -
@zzy 你用的是什么版本的安卓?我正在使用 4.4 并且我没有得到任何版本的 CheckResult 的任何异常。你描述的真的很奇怪。这肯定是一个错误。
-
可能与这个 Lollipop 问题有关:code.google.com/p/android/issues/detail?id=80880
标签: java android serializable