我怎样才能使这个Serializable?

时间:2014-12-13 19:26:52

标签: java android

我很抱歉我解释得像个傻瓜......

我的意思是因为错误而无法编译。 enter image description here

enter image description here

public class PictureBean implements Serializable
{
public enum CCLtype implements Serializable
{
    BY, ND, CO, NN, SA
}

private String picture_rm;
private String picture_url;
private String picture_16_9_url;
private String author;
private String title;
private String description;
private String p_memo;
private String p_original_rate;
private String move_url;
private int like_count;
private int picture_exp_count;
private List<JsonObject> tagList;
private List<JsonObject> categoryList;
private CCLtype ccl;
private String picture_source;
private boolean isUserLiked;
private boolean isUserAdded;

我使用此PictureBean.class在我的服务器中包含图像数据。

但是当我将PictureBean数据列表从活动发送到活动时,如下所示,Eclipse出现了错误行。

如何将PictureBean列表发送给活动中的活动?

&#39; mItems的dataType是PictureBean的列表。

intent.putExtra(CategoryDetailPagerActivity.EXTRA_DATA_CATEGORY_DETAIL_LIST, mItems); 

3 个答案:

答案 0 :(得分:1)

你能与我们分享错误吗?那将是最有帮助的。如果没有这些信息,很难说,但我的猜测可能是您尝试进行序列化的某些类型类型不是您可以在Android中序列化的类型(至少不使用预先制作的&# 34;可序列化&#34;实施。

尝试注释掉所有类型,一次一个,取消注释,找出哪个类型打破了序列化。您可以为这些类型编写特殊的序列化方法(或将其切换为其他类型)。

答案 1 :(得分:1)

<强>更新

不要把它自己作为额外的列表。发送包含列表作为唯一成员的类对象,如下所示:

public class SerialObject implements Serializable
{
    private static final long serialVersionUID = -3975620301776205681L;

    public List<PictureBean> myItems;
}

SerialObject sb = new SerialObject();
sb.myItems = mItems;
intent.putExtra(CategoryDetailPagerActivity.EXTRA_DATA_CATEGORY_DETAIL_LIST, sb);    

原始答案:

这就是你的课程应该如何:

public class PictureBean implements Serializable
{
    private static final long serialVersionUID = 6969933524911660214L;

    public enum CCLtype
    {
        BY, ND, CO, NN, SA
    }

    private String picture_rm;
    private String picture_url;
    private String picture_16_9_url;
    private String author;
    private String title;
    private String description;
    private String p_memo;
    private String p_original_rate;
    private String move_url;
    private int like_count;
    private int picture_exp_count;
    private List<JsonObject> tagList;
    private List<JsonObject> categoryList;
    private CCLtype ccl;
    private String picture_source;
    private boolean isUserLiked;
    private boolean isUserAdded;
}

JsonObject类也是如此。

我相信您不必序列化CCLtype

答案 2 :(得分:1)

只是猜测因为你还没有发布错误,但是因为Android文档说“如果本地serialVersionUID与序列化数据中的serialVersionUID不同,反序列化将失败,并带有InvalidClassException。”通过声明一个明确的ID,您可以在我的应用程序中解决这个问题。把它放在你的班级,这样做,你喜欢任何Long值:

private static final long serialVersionUID = 0L;