我得到java.lang.runtimeexception parcelable遇到ioexception编写可序列化对象

时间:2016-06-16 05:19:24

标签: android android-intent parcelable serializable

我是android的新手并且正在使用两个屏幕的演示应用程序将数据从一个活动传递到另一个活动,在此期间我得到以下异常,

  

java.lang.RuntimeException:Parcelable遇到IOException写入   可序列化对象(name = one.tusk.stush.connect.Post)

  Intent intentPostDetail = new Intent(PostListItem.this.getContext(), NewPostDetailActivity.class);
                Post post = mPost;
                System.out.print("========MY POST IS======>" + mPost.toString());
                intentPostDetail.putExtra("Post", post);
                intentPostDetail.putExtra("flag", "post");
            mContext.startActivity(intentPostDetail);

baseObject

public class BaseObject {

    static DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);

    public static Date getDateFromJSONObject(JSONObject jsonObject, String key) {

        String value = "";
        Date date = null;
        try {
            value = jsonObject.getString(key);
            date = dateFormatter.parse(value);
        } catch (Exception e) {
        }
        return date;

    }
    public static String getStringFromJSONObject(JSONObject jsonObject, String key) {

        String value = "";
        try {
            value = jsonObject.getString(key);
        } catch (Exception e) {
        }
        return value;
    }

    public static int getIntFromJSONObject(JSONObject jsonObject, String key) {

        int value = 0;
        try {
            value = jsonObject.getInt(key);
        } catch (Exception e) {
        }
        return value;
    }

    public static boolean getBooleanFromJSONObject(JSONObject jsonObject, String key) {

        boolean value = false;
        try {
            value = jsonObject.getBoolean(key);
        } catch (Exception e) {
        }
        return value;
    }

    public static double getDoubleFromJSONObject(JSONObject jsonObject, String key) {

        double value = 0;
        try {
            value = jsonObject.getDouble(key);
        } catch (Exception e) {
        }
        return value;
    }



    public static JSONObject getJSONFromJSONObject(JSONObject jsonObject, String key) {

        JSONObject value = null;
        try {
            value = jsonObject.getJSONObject(key);
        } catch (Exception e) {
        }
        return value;
    }

发表

public class Post extends BaseObject implements Serializable {

    private static final long serialVersionUID = 1L;
    public String postTitle;
    public String postImagePath;
    public Date postDate;
    public ArrayList<String> postKeywords;
    public User postUser;
    public int postID;
    public int postLikesCount;
    public int postCommentsCount;
    public boolean likedThisPost;
    public boolean commentedThisPost;
    public boolean inAlbum;
    public String timeAgo;
    public int totalReviews;
    public String loginuserReviews;
    int rv_cnt;
    public double ratingcount;
    public JSONObject userObj;
    public int userId;

    String reviews;

    public Post(JSONObject jsonObject) {
        //Log.d("JSOn", jsonObject.toString());
        this.postID = getIntFromJSONObject(jsonObject, "postID");
        this.postImagePath = getStringFromJSONObject(jsonObject, "postImage");
        this.postTitle = getStringFromJSONObject(jsonObject, "postTitle");
        this.postDate = getDateFromJSONObject(jsonObject, "postDate");
        this.postUser = new User(getJSONFromJSONObject(jsonObject, "user"));
        this.postLikesCount = getIntFromJSONObject(jsonObject, "totalLikes");
        this.postCommentsCount = getIntFromJSONObject(jsonObject, "totalComments");
        this.timeAgo = getStringFromJSONObject(jsonObject, "timeAgo");
        this.commentedThisPost = getBooleanFromJSONObject(jsonObject, "isCommented");
//      userObj = getJSONFromJSONObject(jsonObject, "user");
        this.userId = getIntFromJSONObject(jsonObject, "userID");
        this.totalReviews = getIntFromJSONObject(jsonObject, "totalReview");
        this.ratingcount = getDoubleFromJSONObject(jsonObject, "ratingcount");


        int isLiked = getIntFromJSONObject(jsonObject, "isLiked");
        if (isLiked == 1) {
            this.likedThisPost = true;
        } else {
            this.likedThisPost = false;
        }

        int inAlbum = getIntFromJSONObject(jsonObject, "inAlbum");
        if (inAlbum == 1) {
            this.inAlbum = true;
        } else {
            this.inAlbum = false;
        }
    }

}

任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

在模型类Serializable上实施Post。这将解决错误。

   public class Post implements Serializable {

答案 1 :(得分:0)

让你的BaseObject类也像这样实现Serializable

public class BaseObject implements Serializable
{
}

如果还有问题,请使用BaseObject类更新您的问题。