Android Bundle 无法将可序列化对象识别为已序列化

Posted

技术标签:

【中文标题】Android Bundle 无法将可序列化对象识别为已序列化【英文标题】:Android Bundle doesn't recognize serializable object as serialized 【发布时间】:2019-05-06 11:26:18 【问题描述】:

我正在尝试在包中传递一个可序列化的对象。

尝试在另一个 Activity 中检索对象时,出现错误:

“不兼容的类型:

必需:com.xxxxxx.Warmup(我的可序列化对象 - xxx 填充 包名)

找到:java.io.Serializable"

将对象放入包中的代码:

// Display the Exercise Category List by
            // starting the ExerciseCategoryMainActivity
            Intent intent;
            intent = new Intent(getContext(), ExerciseCategoryMainActivity.class);
            intent.putExtra(Warmup.class.getSimpleName(), warmup);
            startActivity(intent);

我尝试检索对象的代码(并得到错误消息不兼容的类型):

// Get the attached bundle from the intent
    Bundle extras = getIntent().getExtras();

    Warmup warmup = extras.getSerializable(Warmup.class.getSimpleName());

显示我的对象是可序列化的代码:

public class Warmup implements Serializable 
public static final long serialVersionUID = 20180228L;

【问题讨论】:

我自己想出了这个,解决方案非常简单。只需要将附加内容作为热身: 【参考方案1】:

找到了我自己的答案,而且很简单。

我需要做的就是将额外的内容作为热身:

Warmup 预热 = (Warmup) extras.getSerializable(Warmup.class.getSimpleName());

【讨论】:

以上是关于Android Bundle 无法将可序列化对象识别为已序列化的主要内容,如果未能解决你的问题,请参考以下文章

将 android app bundle 上传到 playstore 时出错。。您的 app bundle 的目标是无法识别的语言 jp

Android之使用Bundle进行IPC

Android获取本地路径问题 android studio 4.2 新建res/raw目录 android中读取Raw资源 Android Bundle传递数据,传对象和List(需要序列化)

android intent 可以传递enum 吗

java android 序列号serializable和parcelable

如何将不可解析和不可序列化的对象插入 Bundle