Parcelable встретилClassNotFoundException, читающий Сериализуемый объект

1

Я реализовал класс, который реализует объект Serializable.

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

Но всякий раз, когда я пытаюсь использовать его в Bundle, я получаю это исключение:

 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)

Что я делаю неправильно?

Edit

Hm... Аналогичная проблема при использовании Parcelable:

Class not found when unmarshalling
  • 0
    Можете ли вы показать вызов метода, который вызывает исключение? У меня также были проблемы с сериализуемым ...
  • 1
    на самом деле это b.putSerializable («сохраненный экземпляр», новый SaveMe ()), где b - это объект Bundle. Затем он вызывается неявно, когда пакет восстанавливается. На самом деле, это восстановлено из другого приложения. Может быть, это проблема?
Показать ещё 1 комментарий
Теги:
parcelable
serializable

1 ответ

0

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

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

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

См. этот ответ для получения дополнительной информации: Исправляемый внутренний пакет, который добавлен в парцеллу

Ещё вопросы

Сообщество Overcoder
Наверх
Меню