Engine
オブジェクトをあるアクティビティから別のアクティビティに渡し、次に 3 番目のアクティビティに渡すゲームに取り組んでいます。アクティビティ A から B への最初のパスは問題なく完了しますが、B から C に渡すとエラーが発生します。
最初のアクティビティはNewGameActivity
、Engine
オブジェクトを作成します。Engine
はSerializable
、そのすべての子とその子の子などです。次のコードを使用して、オブジェクトをにNewGameActivity
渡します。Engine
GameActivity
// method of the NewGameActivity class
public void newGame(View view) {
final Engine engine = getEngine();
Intent intent = new Intent(this, GameActivity.class);
intent.putExtra(ENGINE, engine);
startActivity(intent);
}
これはすべて完全に正常に機能します。はオブジェクトGameActivity
を取得して、その操作を開始できます。Engine
ここで、エンジンを 3 番目のアクティビティに渡すことにしました。内から、次のコードを使用してGameActivity
起動します。BudgetActivity
// method of the GameActivity class
public final void showBudget() {
final Engine engine = this.mainView.getEngine();
Intent intent = new Intent(this, BudgetActivity.class);
intent.putExtra(GameActivity.ENGINE, engine);
startActivity(intent);
}
そのため、以前とまったく同じオブジェクトを渡しています。(もちろん、エンジンのメンバーは少し変わっています)
問題は、次のエラーが発生することです。
java.lang.RuntimeException: Parcelable で IOException が発生し、シリアル化可能なオブジェクト (name = test.engine.Engine) を書き込んでいます。 ... 原因: java.io.NotSerializableException: test.android.MainView ...
MainView
の実装ですandroid.view.View
。表示されるのはメイン コンポーネントであり、上記のメソッドGameActivity
の呼び出しを実行するクラスです。showBudget
私はこの時点で非常に混乱しています:
Engine
そして関連するすべてがSerializable
Engine
からNewGameActivity
までGameActivity
問題なく通過できました- なぜあるべき
MainView
ですSerializable
か?クラスには、Android固有のEngine
クラスへの参照がまったくありません