2011-02-01 3 views
1

Я реализовал класс, который реализует объект Serializable.Parcelable сталкиваетсяClassNotFoundException чтение объекта 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

Можете ли вы показать вызов метода, который вызывает исключение? У меня были проблемы с сериализуемыми также ... – Damp

+1

На самом деле это b.putSerializable («savedinstance», новый SaveMe()), где b - объект Bundle. Затем он называется неявным, когда пакет восстанавливается. Фактически, он восстанавливается из другого приложения. Может быть, это проблема? – Vanuan

+1

Если ваше другое приложение не знает класс SaveMe, это, вероятно, так будет. – Damp

ответ

0

Я считаю, что вы можете быть запущен в вопросах загрузчика классов. Вам необходимо вызвать setClassLoader() на Bundle, прежде чем вы прочитаете из них сериализованные объекты.

Перед считыванием из комплекта убедитесь, что вы звоните setClassLoader(SaveMe.class.getClassLoader()).

Если компилятор не может найти SaveMe при компиляции, то обязательно убедитесь, что в целевом приложении отсутствует класс Damp.

Смотрите этот ответ для более подробной информации: Parcelable inside bundle which is added to Parcel

Смежные вопросы