0

我正在开发一个应用程序,在该应用程序中我用一些数据构建了一个 treeView。由于这个过程很长,我希望能够以某种方式保存我构建的treeView(一个LinearLayout),以便在调用活动时恢复它。

让我们用树视图 T 调用我的活动。我有 Home->T->Resource 并从 Resource 我回到 Home。我在 T 中实现了 onSaveInstance ,因此我可以将我需要的变量保存在一个包中,当我从 Resource 回到 Home 并且 T 被破坏时,但问题是我无法将所有 linearLayout 作为单一信息保存在一个捆绑,LinearLayout 似乎不可打包。

所以总结一下我的周期是:

Home-->T-->Resouce-->Home (T is destroyed and onSaveInstance is executed)-->T (I want to avoid the rebuilding of the LinearLayout).

许多thnaks

4

2 回答 2

4

不要这样做。当您创建任何视图、布局或其他方式时,它会使用膨胀 Activity 的上下文来获取和使用系统资源和内部应用程序资源。当您的 Activity 被销毁时,此上下文不再处于活动状态。

如果您确实设法保存并重新加载 LinearLayout,您将得到很多泄漏的窗口和其他崩溃,可能包括 NullPointerExceptions 和 Dead Objects。

如果 Activity 被销毁并重新启动,您应该始终让 Android 为 Activity 重新创建布局。

于 2013-04-10T16:51:31.673 回答
0

为什么不将“treeView T”的资源元素保存在一些有序的数据结构中,例如 ArrayList、HashMap 等...将此数据结构保存到 SharedPreference/Bundle 等...在构建活动视图时,动态创建 LinearLayout通过从之前保存的 SharedPreference/Bundle 中读取元素。

/* Posting an example code below */

LinearLayout linLayout =  new LinearLayout(this);

View childView = null; // read this childView in a sequential manner from the sharedPreference/Bundle

linLayout.addView(childView);
于 2013-04-10T17:23:08.903 回答