SerializableException传递带有Intent的对象(putExtra)

时间:2013-09-20 17:27:36

标签: java android serialization

我正在开发一款游戏,我将Engine对象从一个活动传递到另一个活动,然后传递给第三个活动。从活动A到B的第一次传递完成没有问题,但是当我将它从B传递给C然后我得到一个错误。

第一项活动是NewGameActivity,它会创建我的Engine对象。 EngineSerializable,所有的孩子以及孩子的孩子等都是NewGameActivityEngine使用以下代码将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能够检索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); }

MainView

所以我传递与以前完全相同的对象。 (当然,引擎的成员已经改变了一点)

问题是我收到以下错误:

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = test.engine.Engine)
...
Caused by: java.io.NotSerializableException: test.android.MainView
...

android.view.ViewGameActivity的实现。它是showBudget上可见的主要组件,它是执行上述Engine方法调用的类。

我现在非常困惑,因为:

  1. Serializable,相关的一切都是Engine
  2. 我能够NewGameActivityGameActivity传递到MainView而没有任何问题
  3. Serializable为什么要Engine? {{1}}类没有引用我的任何特定于Android的类

0 个答案:

没有答案