2012-08-13 43 views
0

我有一个类实现Serializable。android可串行化

当我从该类添加一个对象到意图额外和午餐活动我没有问题。

,但是当我试图将该对象添加到由PedingIntent在notificatoin酒吧共进午餐的时候,我找到了收到以下错误:

08-08 18:20:06.186: E/AndroidRuntime(1332): java.lang.RuntimeException: Parcelable encountered IOException writing serializable object 

这是我的代码:

 this.tickerText = sender.getName() + " Sent you a new message"; 
     CharSequence contentTitle = "New message from " + sender.getName();  
     CharSequence contentText = "Click to open"; 
     Intent chat = new Intent(context, Chat.class);  
     chat.putExtra(app.EXTRA_FACEBOOKUSER, sender); 
     chat.putExtra(app.EXTRA_RESET_WAINTING_CHAT_MESSAGES, true); 
     PendingIntent intent = PendingIntent.getActivity(context, 0, chat, android.content.Intent.FLAG_ACTIVITY_NEW_TASK);  
     this.setLatestEventInfo(context, contentTitle, contentText, intent); 

发件人变量类:

import java.io.Serializable; 

import android.graphics.drawable.Drawable; 


public class FacebookUser implements Serializable{ 

    /** 
    * 
    */ 

    private static final long serialVersionUID = 1L; 

    private String name, gender, status;  
    private int id; 
    private double distance, longitude, latitude;; 
    private Drawable profilePicture; 
    private boolean isFacebookFriend = false; 

    public FacebookUser() { 

    } 

    public FacebookUser(int id, String name) { 
     this.setId(id); 
     this.setName(name);  
    } 

    public double getLongitude() { 
     return longitude; 
    } 

    public void setLongitude(double longitude) { 
     this.longitude = longitude; 
    } 

    public double getLatitude() { 
     return latitude; 
    } 

    public void setLatitude(double latitude) { 
     this.latitude = latitude; 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getGender() { 
     return gender; 
    } 

    public void setGender(String gender) { 
     this.gender = gender; 
    } 

    public Drawable getProfilePicture() { 
     Drawable picture = profilePicture; 
     if (picture != null) 
      picture = profilePicture.getConstantState().newDrawable(); 
     return picture; 
    } 

    public void setProfilePicture(Drawable profilePicture) { 
     this.profilePicture = profilePicture; 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 

    public double getDistance() { 
     return distance; 
    } 

    public void setDistance(double distance) { 
     this.distance = distance; 
    } 

    public boolean isFacebookFriend() { 
     return isFacebookFriend; 
    } 

    public void setFacebookFriend(boolean isFacebookFriend) { 
     this.isFacebookFriend = isFacebookFriend; 
    } 

    public String toString() 
    { 
     return this.name; 
    } 

} 
+0

请提供Sender类。一般来说,它的所有成员必须是'Serializable'或'transient'。 – Stephan 2012-08-13 17:10:48

+0

完成 - 添加它 – 2012-08-13 17:14:29

回答

0

DrawableSerializable。尝试在代码中将其设置为transienthandle the implications。基本上你必须处理Drawable成员在反序列化后将为空。您可以使用上述链接中描述的readObjectwriteObject方法挂钩到序列化过程中,以便自己序列化它。