2011-02-01 2 views
1

Serializable 객체를 구현하는 클래스를 구현했습니다. Parcelable encounteredClassNotFoundException Serializable 객체를 읽는 중

public class SaveMe implements Serializable { 
    private static final long serialVersionUID = 1L; 
    private String someValue1; 
    private String someValue2; 
} 

하지만 번들에서 사용하려고 할 때마다,이 예외를 얻을 :

Parcelable encounteredClassNotFoundException reading a Serializable object 
    at android.os.Parcel.readSerializable(Parcel.java:1951) 
    at android.os.Parcel.readValue(Parcel.java:1822) 
    at android.os.Parcel.readMapInternal(Parcel.java:2008) 
    at android.os.Bundle.unparcel(Bundle.java:208) 
    at android.os.Bundle.getString(Bundle.java:1034) 

내가 잘못하고있는 중이 야 무엇을? Parcelable을 사용

편집

흠 ... 비슷한 문제 :

Class not found when unmarshalling 
+0

당신이 예외가 발생 메서드 호출을 보여줄 수 있습니까? serialize 할 때 문제가 발생했습니다 ... – Damp

+1

실제로 b.putSerializable ("savedinstance", 새 SaveMe()) 여기서 b는 Bundle 객체입니다. 번들이 복원되면 암묵적으로 호출됩니다. 사실, 다른 응용 프로그램에서 복원됩니다. 어쩌면 이것이 문제일까요? – Vanuan

+1

다른 앱이 아마도 SaveMe 클래스를 모른다면 그럴 것입니다. – Damp

답변

0

난 당신이 클래스 로더 문제로 실행 할 수있다 생각합니다. 직렬화 된 객체를 읽기 전에 번들에서 setClassLoader()를 호출해야합니다.

번들에서 읽기 전에 setClassLoader(SaveMe.class.getClassLoader())으로 전화하십시오.

컴파일러가 컴파일 할 때 SaveMe를 찾을 수없는 경우 Damp으로 대상 응용 프로그램에 클래스가 누락되어 있는지 확인하십시오.

은 자세한 내용은이 답변을 참조하십시오 : Parcelable inside bundle which is added to Parcel