0

我有一个由创建的视图

this.vehicleListUI = new GameUIVehicleList();
this.vehicleListUI.attachGameEngine(myGameEngine);

这项工作最终导致 android 破坏并恢复视图。Android可以通过使用空构造函数重新创建视图,但我的问题是这GameUIVehicleList将工作我大多数也将myGameEngine 对象设置为GameUIVehicleList

不可序列化,myGameEngine不能这样(是 UI 的一部分)

存在一种通过将myGameEngine对象重新附加到创建视图来完全恢复我的视图的方法。这也有利于在 XML 布局文件中启用大量“new GameUIVehicleList()”。

编辑:

我不知道这是否有帮助,但我从一开始就遇到这个问题的方法是我使用 aandroid.support.v4.app.FragmentActivity并且这会继续销毁并重新创建我的 View 对象。我也可以通过重写一些方法来解决这个问题,android.support.v4.app.FragmentActivity即在重新创建/创建片段时调用,FragmentActivity并为此设置我的 Activity 中保存需要数据的需要值。

4

2 回答 2

2

Activity(和视图)的销毁和重新创建通常发生在配置更改(最常见的是屏幕方向更改)时。您可能想检查这篇文章是否有帮助,并且onRetainNonconfigurationInstance() /setRetainInstance()不会解决您的问题。

于 2012-10-22T08:59:25.353 回答
0

如果myGameEngineis not Serializableor Parcelable,我认为不可能可靠地做到这一点。

但是,如果可以,因为myGameEngine有时无法恢复,您可以使用您自己的包含变量Application的自定义类扩展该类,然后在您的应用程序上下文中保存该变量。MyApplicationmyGameEngineonCreatemyGameEngine

MyApplication app = (MyApplication) this.getApplicationContext();
this.vehicleListUI.attachGameEngine(app.myGameEngine);
于 2012-10-22T08:46:16.743 回答