2011-02-01 7 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

あなたは、例外が発生し、メソッド呼び出しを表示することができますか?私はシリアライズ可能な問題もありました... – 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

関連する問題