2012-08-13 2 views
0

나는 Serializable을 구현하는 클래스가있다.android Serializable

그 클래스의 객체를 의도 추가에 추가 할 때 점심 식사에 아무런 문제가 없습니다.

하지만 난은 notificatoin 줄에 PedingIntent에서 점심을 먹었다 인 텐트에 개체를 추가하려고 해요 때 i를 다음과 같은 오류 얻을 :

 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); 
이 내 코드입니다

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

을 발신자 변수 클래스

:

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

+0

완료 - 추가 함 –

답변

0

Drawable는 없다. 코드에 따라 transienthandle the implications으로 설정해보세요. 기본적으로 Drawable 멤버가 비 직렬화 후 null이 될 것이라고 처리해야합니다. 위의 링크에서 설명한대로 readObjectwriteObject 메서드를 사용하여 직렬화 프로세스에 연결하여 직접 직렬화 할 수 있습니다.