我正在开发一款游戏,我将Engine
对象从一个活动传递到另一个活动,然后传递给第三个活动。从活动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
能够检索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.View
是GameActivity
的实现。它是showBudget
上可见的主要组件,它是执行上述Engine
方法调用的类。
我现在非常困惑,因为:
Serializable
,相关的一切都是Engine
NewGameActivity
从GameActivity
传递到MainView
而没有任何问题Serializable
为什么要Engine
? {{1}}类没有引用我的任何特定于Android的类