Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使此可序列化?_Java_Android - Fatal编程技术网

Java 如何使此可序列化?

Java 如何使此可序列化?,java,android,Java,Android,我很抱歉我解释得像个傻瓜 我的意思是我不能编译,因为有错误。 你能告诉我们这个错误吗?那将非常有帮助。如果没有这些信息,很难判断,但我的猜测是,您试图使可序列化的某些类类型可能不是可以在Android中序列化的类型(至少不使用预先制作的“可序列化”实现) 尝试注释掉所有类型,并一次取消注释一个,以找出哪种类型破坏了您的序列化。您可以为这些类型编写特殊的序列化方法(或将其切换到其他类型)。更新: 不要将列表本身作为额外成员。请发送包含该列表的类对象作为唯一成员,如下所示: public cla

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

我的意思是我不能编译,因为有错误。


你能告诉我们这个错误吗?那将非常有帮助。如果没有这些信息,很难判断,但我的猜测是,您试图使可序列化的某些类类型可能不是可以在Android中序列化的类型(至少不使用预先制作的“可序列化”实现)


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

更新:

不要将列表本身作为额外成员。请发送包含该列表的类对象作为唯一成员,如下所示:

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);    
公共类SerialObject实现可序列化
{
私有静态最终长serialVersionUID=-3975620301776205681L;
公共物品清单;
}
SerialObject sb=新的SerialObject();
sb.myItems=mItems;
意向。putExtra(类别DetailPageActivity.EXTRA\u数据\u类别\u详细信息\u列表,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;
}
公共类PictureBean实现可序列化
{
私有静态最终长serialVersionUID=6969933524911660214L;
公共枚举CCLtype
{
BY,ND,CO,NN,SA
}
私有字符串图片;
私有字符串图片链接;
私有字符串图片\u 16\u 9\u url;
私有字符串作者;
私有字符串标题;
私有字符串描述;
私人字符串p_备忘录;
私有字符串p_原始_比率;
私有字符串move_url;
私有整数,如μ计数;
私人int图片经验计数;
私有列表标记列表;
私有列表分类列表;
私有ccl型ccl;
私有字符串图片_源;
私有布尔值是用户喜欢的;
添加了私有布尔值;
}
JsonObject类也是如此


我相信您不必序列化CCLtype,这只是一个猜测,因为您尚未发布错误,但正如Android文档所说,“如果本地SerialVersionId与序列化数据中的SerialVersionId不同,反序列化将失败,并出现InvalidClassException。”你可以像我在我的应用程序中那样,通过声明一个显式ID来解决这个问题。要做到这一点,请在你的类中使用任何你喜欢的
Long
值:

private static final long serialVersionUID = 0L;

从阅读错误开始,这就是他们的目的。你有什么问题?你没有提到这个问题!对不起…我添加了一幅解释错误的图片。你可能应该在问题中提到编程语言,尽管从你的代码和标记来看,它似乎是Java。
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;
}
private static final long serialVersionUID = 0L;