0

我有一个 Android 项目,我正在为其创建一个自定义选项卡视图。我以这样一种方式构造了 main Activity( FragmentActivity),它在屏幕底部有一个标签栏,FrameLayout上面有一个。选项卡上的每个选项都会创建一个新选项Fragment(与该选项相关)。现在,为了防止每次单击选项时重新创建片段,我将片段存储在活动的实例变量中。因此,当单击选项卡选项时,我检查其片段是否已创建,如果尚未创建,则创建并将其添加到FrameLayout(并隐藏任何现有片段),否则,我只是隐藏现有片段(存储在名为currentlyViewedFragment) 的实例变量中,并显示与单击的选项匹配的已创建片段。

此外,当onCreate()调用活动时,我将初始选项卡设置为主页选项卡(选项卡之一)。这很好用,除非重新创建活动(由于方向变化)。在这里,我认为实例变量(本质上是指向已创建片段的指针)失去了它们的值并设置为 null。这会导致创建主页选项卡并覆盖在恢复的视图上。我也知道您可以使用传递给的包保存状态onSaveInstanceState并使用onRestoreInstanceState. 但是捆绑包需要包含可序列化的数据。然而,这些实例变量仅仅是指针!我如何恢复他们的价值观?

注意:这个问题在我发表的评论中得到解决。

谢谢。

4

1 回答 1

-1

您的问题的答案是使用捆绑包进行状态恢复。创建一个类,您可以在其中放置变量并且可序列化,以便您可以将其对象放入包中。或者您也可以使用 SharedPreferences 将实例变量的值存储在手机存储中。我希望你能从我奇怪的回答中得到想法。

于 2015-05-05T08:10:05.013 回答