0
私は小包(バンドルで保存)から自分のアプリケーションを復元しようとしています。ClassNotFoundException小包を読むとき
私のアクティビティはOpenGLを使用しているため、このサーフェスビューを作成し、アプリケーションの保存時または復元時にこれらの関数を呼び出します。 mFlowManager
public class FlowManager implements Touchable, Parcelable {
private enum State {
SPLASH, MENU, GAME_SINGLE, GAME_MULTI
};
private Connection mConnection;
private ScoreDataSource mScoreDataSource;
private GameEngine mGameEngine;
private SplashScreen mSplash;
private MainMenu mMenu;
private State mState = State.SPLASH;
private long mTime;
private int mVersionID;
/* Other stuff */
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeString(mState.name());
out.writeParcelable(mSplash, 0);
out.writeParcelable(mMenu, 0);
}
public static final Parcelable.Creator<FlowManager> CREATOR = new Parcelable.Creator<FlowManager>() {
public FlowManager createFromParcel(Parcel in) {
return new FlowManager(in);
}
public FlowManager[] newArray(int size) {
return new FlowManager[size];
}
};
private FlowManager(Parcel in) {
mConnection = new Connection();
mState = State.valueOf(in.readString());
mSplash = in.readParcelable(null); // Exception occurs here
mMenu = in.readParcelable(null);
}
}
FlowManagerクラスを保存する必要がある他のクラスのインスタンスを持っているでmRenderer
public void onRestoreInstanceState(Bundle inState){
mFlowManager = inState.getParcelable("flowmanager");
}
public void onSaveInstanceState (Bundle outState){
outState.putParcelable("flowmanager", mFlowManager);
}
で
class MySurfaceView extends GLSurfaceView {
/* Lots of other stuff */
public void onRestoreInstanceState(Bundle inState) {
Log.d("Wormhole", "Restoring instance state");
mRenderer.onRestoreInstanceState(inState);
}
public void onSaveInstanceState(Bundle outState) {
Log.d("Wormhole", "Saving instance state");
mRenderer.onSaveInstanceState(outState);
}
}
。私がParselableにしたクラスは、それらを復元するときにエラーが発生します。
私はこのエラーに関する記事を見ましたが、それらはすべてアプリケーション間でデータを送信し、別のClassLoaderを使用する必要がありました。これはすべて同じアプリです。これはGLSurfaceViewにあるため、ClassLoaderを設定する必要がありますか?私が必要とするClassLoaderを見つけるにはどうすればいいですか?
** mSplash **何ですか?あなたは 'FlowManager'クラス全体をペーストできますか? – waqaslam
' FlowManager'にさらに追加しました。完全なクラスは無関係のコードがたくさんあるので非常に長くなります。 mSplashはもう一つのクラスです。 'publicクラスSplashScreen extends BasicScreen extends Parcelable' – EmbMicro